gpt4 book ai didi

c++ - 在 Windows 中对套接字的 closesocket() 调用需要 20 秒

转载 作者:行者123 更新时间:2023-11-28 06:27:46 25 4
gpt4 key购买 nike

<分区>

我试图通过 closesocket() 关闭 Windows 上的套接字,但需要 20 秒才能完成。一开始我以为是linger的间隔,虽然我并没有用linger的setsockopt设置什么,所以我添加了这样的代码:

linjer lobj;
lobj.l_onoff = 1;
lobj.l_linger = 0;

sz = sizeof(lobj);

setsockopt(s_, SOL_SOCKET, SO_LINGER, (char *) &lobj, sz);

但还是没有用。

有什么想法吗?我只想关闭连接,不管它是正常还是流产,只想尽快关闭它。

附言正好需要 20 秒。

lobj.l_onoff = 1; 
lobj.l_linger = 0;
sz = sizeof(lobj);
setsockopt(s_, SOL_SOCKET, SO_LINGER, (char *) &lobj, sz);
lobj.l_onoff = -1;
lobj.l_linger = -1;
getsockopt(s_, SOL_SOCKET, SO_LINGER, (char *) &lobj, &sz);
log << "Option 1:" << lobj.l_linger << ".\n";
log << "Option 2:" << lobj.l_onoff << ".\n";
closesocket(s_);

此代码打印 option1 = 0 和 option2 = 1,因此它确实正确设置了选项。

另外,从wireshark观察,它在整个延迟开始时发送RST。

此外,closesocket() 返回 0。

附言我已经设置了 SO_REUSADDR,会不会是它导致的?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com