OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3085|回复: 2

FreeRTOS下跑lwip的tcp协议,建立链接后,断开网口,不能再次链接,必须重启才能回复,请指教一下

[复制链接]

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2016-6-24
在线时间
16 小时
发表于 2023-8-5 06:52:49 来自手机 | 显示全部楼层 |阅读模式
TCP协议断开网口之后,TCP的进程能不能自己再次连接?TCP服务端,这个怎么实现?稍后把程序附上
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2016-6-24
在线时间
16 小时
 楼主| 发表于 2023-8-7 08:58:28 | 显示全部楼层
原子哥,能指点一下吗?
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2020-9-8
在线时间
20 小时
发表于 2023-11-8 14:48:28 | 显示全部楼层
本帖最后由 464506176 于 2023-11-8 15:46 编辑

我也遇到这个问题了,不过是407作为[backcolor=rgba(16, 110, 190, 0.18)]Client
研究了几天,正点原子的例程遇到以上情况,会在  i = alloc_socket(conn, 0)里面挨个把
/** The global array of available sockets */
static struct lwip_sock sockets[NUM_SOCKETS];
填满,
006 sockets[0].conn = 536933532
006 sockets[1].conn = 536933492
006 sockets[2].conn = 536933452
006 sockets[3].conn = 0
006 sockets[3].newconn = 536933412

这样后面就会:因为tcp_slowtmr: no active pcbs
而导致:
lwip_socket(PF_INET, SOCK_STREAM, 0) = -1 / ENOBUFS (could not create netconn)

不能创建 netconn,永远连接失败了,即使服务器重启或网线恢复连接也不行。
程序里closesocket(g_sock)了也不对,这部分资源没有被释放,还是失败。

至于怎么解决呢?我只是个画PCB的硬件小可爱,暂时没找到办法。只能直接让单片机重启了
好了,找到原因了:

        /* 连接远程IP地址 */
        err = connect(g_sock, (struct sockaddr *)&atk_client_addr, sizeof(struct sockaddr));

        if (err == -1)
        {
            printf("连接失败:%d\r\n",g_sock);
            // g_sock = -1;    //这里之前g_sock=0,强制赋值-1,导致后面的closesocket失效,没有释放相应的资源
            closesocket(g_sock);
            g_sock = -1;      //改到这里就对了
           // netconn_delete(conn_his);
            myfree(SRAMIN, tbuf);
            HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_RESET);       
            vTaskDelay(200);            
            HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_SET);
            vTaskDelay(200);        
            goto sock_start;
        }




回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 20:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表