最近对网络进行可靠性测试,发现当采用TCP SERVER时,在通信的过程中,网络异常断开(这里的断开不是只与设备相连的网线断开,而是指如交换机后一级断开,如设备和计算机通过交换机进行通信,将电脑那端断开),这样设备也无法检测到网络断开而继续发送数据,由于LWIP本身的机制,等到发送缓存满后就会一直阻塞到等待发送完成的消息那里。这一旦发生这种情况,我试图建立一个监控线程,当发生这种情况时来关闭这个连接,发现也无法关闭。
不知道各位大侠是否有其他的解决办法来解决发送阻塞的问题,当然如果能实现发送非阻塞模式那就好了。
我觉得这是RTT+LWIP的一个致命问题,如果在设备端还可以通过中断来读取状态判断网络是否断开,但是如果在交换机的那一段,后者其他的交换机上连接断开,判断是否连接可能无解,但是也不能让这个连接无法关闭啊。至少能有一个方法来关闭这个连接,对于TCP server端来说就是关闭无效的连接重新等待建立新的连接