是否有可能在Windows中启动具有重叠I/O的TCP连接请求,并在连接完成之前取消它?我需要至少支持Windows XP SP2.
ConnectEx
允许重叠连接尝试
要取消这个,需要使用CancelIo
通过SOCKET
,就好像它是HANDLE
一样(它确实是)。但是这个必须在调用ConnectEx
的同一个线程中完成。要实现线程专一性,管理事情不太容易。
XP/2003之后(即。在Vista/2008/8/2008/r2中,你可以在不同的线程中使用CancelIoEx
(OVERLAPPED
实例用于完全识别IO操作)。
从这里:
重叠该目录包含一个使用重叠的示例服务器程序I/O。示例程序使用AcceptEx函数和重叠的I/O处理来自客户端的多个异步连接请求有效。服务器使用AcceptEx函数进行多路复用单线程Win32应用程序中的不同客户端连接。使用重叠I/O允许更大的可伸缩性。