C++ 无超时的Boost套接字僵尸TCP连接
我正在使用boost::asio::ip::tcp::socket for WiFi连接每1分钟将数据推送到远程云服务,它工作正常,但在连接运行时出现问题,然后由于WiFi丢失和恢复或其他原因更改/重新分配ip地址,以前基于原始源IP的连接没有断开,我认为TCP应该有超时来断开连接,但它从来没有断开,连接仍然处于活动状态,可以连续发送数据,没有错误。显然,所有数据都没有发送到网络并到达目的地。我向Boost邮件列表发布了一些问题,但得到的回应是,应该是低级TCP/IP问题,Boost对此无能为力。感谢您的建议如何修复它或解决方法 多谢各位 亲切问候,C++ 无超时的Boost套接字僵尸TCP连接,c++,networking,boost,tcp,embedded-linux,C++,Networking,Boost,Tcp,Embedded Linux,我正在使用boost::asio::ip::tcp::socket for WiFi连接每1分钟将数据推送到远程云服务,它工作正常,但在连接运行时出现问题,然后由于WiFi丢失和恢复或其他原因更改/重新分配ip地址,以前基于原始源IP的连接没有断开,我认为TCP应该有超时来断开连接,但它从来没有断开,连接仍然处于活动状态,可以连续发送数据,没有错误。显然,所有数据都没有发送到网络并到达目的地。我向Boost邮件列表发布了一些问题,但得到的回应是,应该是低级TCP/IP问题,Boost对此无能为力
jupiter如果您正在执行阻塞I/O,(1)套接字发送缓冲区将填满;(2) 您的发送呼叫将被阻止;然后,稍后(3)TCP的ACK定时器将超时,并重置连接。如果您正在执行非阻塞I/O,并且从未检查发送调用的成功与否,那么您的发送可能会永远持续下去。当然,boost应该会将底层TCP错误过滤到您的应用程序中。感谢您的响应,我使用非阻塞I/O,在调用boost::asio::async\u write之后,我检查了boost::system::error\u代码和状态,没有错误。您能详细说明一下获得boost TCP错误的解决方法吗?您必须发布一些代码。NB异步和非阻塞I/O是两个不同的东西。是的,它是NB异步的,代码是调用boost::asio::async\u write