是的,这很好.
调用WSAConnect将阻塞线程,直到创建连接/发生错误.然后,您可以执行异步IO并获取有关已使用应用程序IOCP的已完成数据包的通知.IOCP不会提供任何有关的数据包WSAConnect.
另一点是IOCP使用Overlapped IO排除故障.如果你的函数没有使用OVERLAPPEDstruct的任何内存位置(比如WSAConnect),你可以确定IOCP不会处理那个API调用.即使OVERLAPPED提供,也不意味着该操作是异步的并且将在IOCP中发布.
你可能想看看Boost.AsioC++和libuvC代码,然后代码也是可移植的(并且不那么烦躁).另一个有趣的平台是微软Casablanca,它是跨平台的,但在我的经验中,性能是灾难性的.