3

This call should return after only a very short time, but on some machines it inexplicably takes very close to 1 second. Has anyone seen this issue. I am using the loopback address so the network should be out of the picture.

4

1 回答 1

0

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

这就是我要做的:

  • 尝试终止您的程序(通过任务管理器)。终止它需要时间吗?(如果是这样 - 似乎它已被驱动程序锁定)。
  • 如果您正在谈论流套接字(即 TCP 或类似的) - 尝试使用SO_DONTLINGER选项。也就是说,指定您不想等到所有待处理的数据都发送到对等方。
于 2012-04-05T07:14:09.900 回答