某些计算机上的WinSock closesocket()调用需要一秒钟

时间:2012-04-05 06:06:57

标签: c++ windows winsock closesocket

此调用应在很短的时间后返回,但在某些机器上,它莫名其妙地需要非常接近1秒。有没有人见过这个问题。我正在使用环回地址,因此网络应该不合适。

1 个答案:

答案 0 :(得分:0)

问题可能出在窗口套接字实现中。从操作系统的角度来看,调用closesocket(或CloseHandle)相当于释放驱动程序的“设备”对象。大多数驱动程序立即(同步)处理此请求,必要时中止所有(潜在的)未完成的I / O.然而,“愚蠢”的驱动程序可能阻止你,直到某事完成。

这就是我要做的事情:

  • 尝试终止您的程序(由任务管理器)。是否需要时间来终止它? (如果是这样 - 似乎被司机锁定了。)
  • 如果您正在谈论流套接字(即TCP或类似内容) - 请尝试使用SO_DONTLINGER选项。也就是说,指定您不想等到所有待处理数据都发送给对等方。