C++ 在某些计算机上,WinSock closesocket()调用需要一秒钟的时间
这个调用应该在很短的时间后返回,但在某些机器上,它莫名其妙地需要非常接近1秒的时间。有人见过这个问题吗。我使用的是环回地址,因此网络应该是不存在的。问题可能在window sockets实现中的某个地方。从操作系统的角度来看,调用C++ 在某些计算机上,WinSock closesocket()调用需要一秒钟的时间,c++,windows,winsock,closesocket,C++,Windows,Winsock,Closesocket,这个调用应该在很短的时间后返回,但在某些机器上,它莫名其妙地需要非常接近1秒的时间。有人见过这个问题吗。我使用的是环回地址,因此网络应该是不存在的。问题可能在window sockets实现中的某个地方。从操作系统的角度来看,调用closesocket(或CloseHandle)相当于释放驱动程序的“设备”对象。大多数驱动程序会立即(同步)处理此请求,必要时中止所有(潜在)未完成的I/O。然而,“愚蠢”的司机可能会阻止你,直到事情完成 这就是我要做的: 尝试(通过任务管理器)终止您的程序。终止
closesocket
(或CloseHandle
)相当于释放驱动程序的“设备”对象。大多数驱动程序会立即(同步)处理此请求,必要时中止所有(潜在)未完成的I/O。然而,“愚蠢”的司机可能会阻止你,直到事情完成
这就是我要做的:
- 尝试(通过任务管理器)终止您的程序。终止它需要时间吗?(如果是的话-似乎是被司机锁上的)
- 如果您正在谈论流套接字(即TCP或类似协议),请尝试使用
选项。也就是说,指定您不希望等待所有挂起的数据发送到对等方SO\u DONTLINGER
FIN
数据包的乒乓球。我不确定,但可能所以_DONTLINGER
也包括这个。即,使用此标志,它将中止与RST