Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无超时的Boost套接字僵尸TCP连接_C++_Networking_Boost_Tcp_Embedded Linux - Fatal编程技术网

C++ 无超时的Boost套接字僵尸TCP连接

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对此无能为力

我正在使用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