【发布时间】:2011-12-04 14:25:35
【问题描述】:
是否可以使用重叠 I/O 发起 TCP 连接请求,并在 Windows 中连接完成之前取消它?我需要至少支持 Windows XP SP2。
【问题讨论】:
标签: winapi tcp winsock overlapped-io request-cancelling
是否可以使用重叠 I/O 发起 TCP 连接请求,并在 Windows 中连接完成之前取消它?我需要至少支持 Windows XP SP2。
【问题讨论】:
标签: winapi tcp winsock overlapped-io request-cancelling
ConnectEx 允许重叠连接尝试。
要取消这个需要使用CancelIo 传递SOCKET,就好像它是HANDLE(确实如此)。但这必须在调用ConnectEx 的同一线程中完成。管理事物以实现线程特异性并非易事。
在 XP/2003(即 Vista/2008/8/2008R2)之后,您可以使用来自不同线程的CancelIoEx(OVERLAPPED 实例用于完全识别 IO 操作)。
【讨论】:
来自here:
重叠
此目录包含一个使用重叠的示例服务器程序 输入/输出。示例程序使用 AcceptEx 函数和重叠 I/O 处理来自客户端的多个异步连接请求 有效。服务器使用AcceptEx函数进行多路复用 单线程 Win32 应用程序中的不同客户端连接。 使用重叠 I/O 可以提高可扩展性。
【讨论】: