草庐IT

ErrorHook

全部标签

tcp - 当对等方重置 winsock 2 中的 TCP 连接时,如何避免数据丢失?

我正在编写一个UPnP客户端,我的一个测试路由器总是“砰”地关闭连接,而不是在它发送响应后进行正常的关闭发送。这会导致我的recv调用无法获取数据。我知道数据在那里,因为我可以在数据包嗅探器中看到它。如果我的代码运行速度足够快,可以在连接重置之前接收到数据,那么我就可以获取数据。在许多情况下,对等方在我可以接收它之前重置连接,导致没有数据复制到我的接收缓冲区,并且recv出现WSAECONNRESET错误。有什么想法可以解决我的问题以容忍netgear路由器中写得不好的UPnP实现吗?我尝试使用WSAEventSelect并使读取异步,这似乎有所帮助,但并不总是有效。//Objectt