2011-10-10 63 views

回答

6

ConnectEx允许重叠连接尝试。

要取消这一个将需要使用CancelIo通过SOCKET就好像它是一个HANDLE(这是真的)。但是这个必须是从调用ConnectEx的同一个线程完成的。管理事情,以便您可以实现该线程的特异性不太容易。

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

+0

您也可以简单地通过关闭套接字取消连接尝试; ConnectEx()将失败... –

+0

@Richard:太棒了,谢谢!我将从发出调用ConnectEx()的同一个线程中取消,所以这不会成为问题。但是,有没有人知道TCP级别会发生什么?假设SYN已经发送,将取消连接向对方发送RST,还是将它保持握手挂? –

0

here

重叠

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