完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
硬件:STM32F407VCT6+LAN8720 下面是使用到tcpclient的部分代码,作用是将传进线程的IP和发送信息发出后,等待1s接收就关闭线程 static void set_tcp_net_thread(void *arg) 下图是设置的TCP套接字个数 TCP设置套接字个数 == N 个人认为是内存没有释放完导致的,即使调用了closesocket 问题:怎么解决tcp客户端连续连接断开,而不会造成socket错误? |
|
相关推荐
6个回答
|
|
msh>netstat
|
|
|
|
当出现socket失败时,我查看了netstat,如图 刚开始打印,还会有作为客户端已断开连接的sock和提示FIN_WAIT_2,过几秒后再打印,就剩下作为服务器还在连接的网络 |
|
|
|
可以检查下默认的时间,并改小一些。
|
|
|
|
可以把socket返回的句柄sock打印下;如果是socket句柄未释放的话,理论上sock的值会一直递增,直至N值。
|
|
|
|
感谢回复,sock值打印过,没有改变的;
目前我socket里的函数逐个排查,发现在调用tcp_alloc函数里pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB);会与正常不同,返回NULL值 |
|
|
|
感谢各位回复,问题解决了
通过msh>netstat的信息,知道断开的sock会短暂卡在FIN_WAIT_2的状态上,虽然不知道为什么会这样(网上有的说法是服务器不发FIN) 我的解决方法的调节FIN_WAIT_2的超时时间 #define TCP_FIN_WAIT_TIMEOUT 10000 //20000 /* milliseconds */ |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
786 浏览 0 评论
4210 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2520 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2926 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
31442 浏览 11 评论
72901 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 05:34 , Processed in 0.843618 second(s), Total 82, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号