[问题]WIZnet的芯片无法检测到连接断开状态。我们应该如何解决该问题?

Home / 博客 / [问题]WIZnet的芯片无法检测到连接断开状态。我们应该如何解决该问题?

在TCP模式下,当网络连接非正常断开时,WIZnet的产品不检测状态。

WIZnet的芯片通过3次握手的方法处理TCP连接和断开连接。如果正在和WIZnet芯片通信的对端系统突然关闭连接,连接断开的信息不能被发送到WIZnet芯片。WIZnet的芯片会认为连接状态是建立好的,但是对端系统是关闭的。因此,即使是对端系统请求重新建立连接,WIZnet也不会接受。

为了解决这个问题,你应该使用持久连接报文(keep alive packet)。

通过定期发送持久连接报文,WIZnet的芯片可以检查连接是否保持。如果连接状态不正常,那么持久连接报文没有响应,同时发生超时。基于这种过程,WIZnet可以关闭当前连接状态。

对于W3100A而言,该功能被应用于驱动程序中。如果你使用的是W3150+和W5100,持久连接报文可以再寄存器中设置。