我用wiz包,使用w5500进行网络通信,对接到但是socket此时已经建立,正在通信,如果此时突然拔掉网线,因为本身使用非阻塞。所以我这边可以通过netdev_is_link_up检测到网线断开,但是此时我调用closesocket并不能释放网络资源。最后导致,我再次检测网线接入,重新创建socket的时候无法通信,应该时网络资源没有完全释放。因为如果我时在拔掉网线之前closesocket。然后再拔掉网线,再次接入网线,重新建立socket,此时是完全正常的。也没有发生内容泄漏。
测试的情况时:如果我在重建socket之前,或者拔掉网线之后尝试调用wiz_reset函数,此时重新建立socket时可以正常通信的。但是此时出现了内存泄漏,我如果只是创建一个UDP socket。每次拔掉网线,就会导致有100多个字节左右的内容泄漏(好像是108个字节),理论上如果soket越多,内存泄漏也就越多。也就是在拔掉网线之后调用closesocket并没有释放网络资源。这个时候再次接入网线,就无法继续通信了。需要重启w5500。但是重启w5500也无法解决内存泄漏的问题。
有没有人知道如何解决这个问题?
这个是我调用wiz_reset之后测试的效果
更多回帖