具有重叠I / O的TCP连接

时间:2011-10-10 14:49:43

标签: winapi tcp winsock overlapped-io request-cancelling

是否可以使用重叠的I / O启动TCP连接请求,并在Windows中完成连接之前取消它?我需要至少支持Windows XP SP2。

2 个答案:

答案 0 :(得分:6)

ConnectEx允许重叠连接尝试。

要取消此操作,需要使用CancelIo传递SOCKET,就像它是HANDLE一样(确实如此)。但是这个必须从调用ConnectEx的同一个线程完成。管理事物以便您可以轻松实现该线程的特异性。

在XP / 2003之后(即Vista / 2008/8 / 2008R2),您可以使用来自不同线程的CancelIoExOVERLAPPED实例用于完全识别IO操作)。

答案 1 :(得分:0)

来自here

  

重叠

     

此目录包含使用重叠的示例服务器程序   I / O。示例程序使用AcceptEx函数和重叠的I / O.   处理来自客户端的多个异步连接请求   有效。服务器使用AcceptEx函数进行多路复用   单线程Win32应用程序中的不同客户端连接。   使用重叠I / O可以实现更高的可伸缩性。