我有一个使用 IOCP 进行套接字通信的客户端应用程序。我正在使用 ConnectEx 建立与远程端点的 TCP 连接(在调用 ConnectEx 之前将套接字绑定到 ADDR_ANY 和端口 0)。
与同一个远程端点(相同的 IP 地址和端口号)建立两个连接是有效的。当我使用当前代码测试该条件时,我有两个重叠的 IO 读取操作未完成(每个连接的套接字上一个)来自对 WSARecv() 的调用。每个 WSARecv() 都使用正确的套接字和重叠结构调用。例如:WSARecv(socket1, ...重叠1)和WSARecv(socket2, ...重叠2)。我遇到的问题是,当我从任一遥控器收到响应时,它会触发两个未完成的重叠操作的完成事件。我的代码仅在两个遥控器具有相同的 IP 地址和端口号时才产生此结果,而不是在有两个唯一的远程地址时产生此结果。这是预期的行为(希望不是)?如果是这样,是否有另一种方法来实现这一点?