如何设置winsock接受函数超时



我正在编写一个充当服务器的win32控制台应用程序。我必须设置一个超时来接受功能,就像在10秒内没有连接端口关闭一样。正如我所知,这里有一些方法:

  1. 异步方式。但是我正在编写一个控制台应用程序,所以我不能使用wsasyncselect函数。

  2. 具有选择功能。但有消息说这种方式不安全。如果客户端发送了RST包,然后它脱机,那么select函数会认为这个套接字仍然可读,accept函数将永远保持在那里。

  3. 具有报警功能。首先,我尽量不使用它,因为它在这样的应用程序中是出乎意料的,其次,我担心它是否线程安全。

因此,我真诚地请求您找到一种让accept函数超时的方法,它必须是线程安全的,而且是一种更好的方法。

使套接字不阻塞(正如@JoachimPileborg所建议的)。

使套接字不阻塞的调用是带有FIONBIO参数的ioctlsocket。

这里有一个示例程序。

相关内容

  • 没有找到相关文章

最新更新