最近在项目中使用AT socket模块,网络应用层使用socket接口进行通信,测试发现当底层sal_closesocket调用失败时,导致socket文件不用被释放,
经过排查发现net_sockets.c函数中closesocket()
函数中处理有问题,closesocket中应该修改成无认底层sal_closesocket
关闭成功还是失败,
都应该对socket文件进行翻译,应该修改成如下就解决问题。
[i=s] 本帖最后由 Cheney_Chen 于 2019-3-5 19:41 编辑 [/i]
感谢楼主反馈,问题已经修复,可以查看这个 PR https://github.com/RT-Thread/rt-thread/pull/2382/files
硬件连接的2G 或 4G模块,由于网络和模本身死机等问题很容易会出现底层socket关闭失败的情况,这样的话socket句柄就没办法释放,rtt系统默认最多分配16个socket,当出现16次异常关闭后,你就没法新分配socket了,你就再也连接不上网络了。