我正在使用异步调用编写 TCP 客户端。如果应用程序启动时服务器处于活动状态,则它会连接并正常通话。但是,如果第一次连接失败,则随后对 connect() 的每次调用都会失败,并显示 WSAENOTCONN(10057),而不会产生任何网络流量(通过 Wireshark 进行检查)。
当前代码在收到错误时不会关闭套接字。TCP 状态图似乎不需要它。它只是等待 30 秒,然后再次尝试 connect()。
随后的 connect() 和随后的 read() 都返回 WSAENOTCONN 错误。
我需要关闭套接字并打开一个新的吗?如果是这样,哪些错误需要我关闭套接字,因为有很多不同的错误,其中一些我可能永远不会在测试台上看到。
您可以假设这是 MS Winsock2,尽管它实际上是 Interval Zero RTX 2009,在某些地方略有不同。