硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4474|回复: 4
收起左侧

[ThreadX全家桶] ThreadX NetDUO 网卡MAC地址冲突导致TCP工作后再次连接偶发TCP 服务卡死在监听问题

[复制链接]

3

主题

20

回帖

29

积分

新手上路

积分
29
发表于 2021-7-16 16:30:36 | 显示全部楼层 |阅读模式
本帖最后由 519382868 于 2021-7-20 03:28 编辑

ThreadX NetDUO 网卡MAC地址冲突导致TCP工作后再次连接偶发TCP 服务卡死在监听问题,如果接收 TCP 连接后 返回(NX_SUCCESS:(0x00) 接收 TCP 服务器套接字(被动连接)成功)是没问题的,如果出现其他情况需要删除服务器套接字与侦听端口的关联和重新侦听 TCP 端口上的客户端连接。
例子里面需要这样改就可以解决卡死在监听问题。
接收 TCP 服务器返回其他值时运行这两个函数:
      //删除服务器套接字与侦听端口的关联
      nx_tcp_server_socket_unaccept(&TCPSocket);
     //重新侦听 TCP 端口上的客户端连接
     nx_tcp_server_socket_relisten(&ip_0, DEFAULT_PORT, &TCPSocket);

QQ图片20210716161745.png
注意!注意!注意!重要的事说三遍。
调用nx_tcp_socket_send()函数返回 NX_SUCCESS后,应用程序不得重用数据包或更改数据包内容。另一端确认数据后,NetX Duo
内部处理将最终释放传输的数据包。
除非返回了错误,否则应用程序不应在此 <nx_tcp_socket_send>调用后释放该数据包。这样做会导致不可预知的结果,因为网络驱动程序还会在传输后尝试释放该数据包。
所以不要乱调用nx_packet_release()函数释放该数据包。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115812
QQ
发表于 2021-7-16 16:49:06 | 显示全部楼层
非常感谢楼主分享。
回复

使用道具 举报

681

主题

3489

回帖

5557

积分

论坛元老

积分
5557
发表于 2021-7-19 09:54:34 | 显示全部楼层
你好,弱弱的问一下,这个是哪个例程的 还是你自己写的程序啊 ?
回复

使用道具 举报

3

主题

20

回帖

29

积分

新手上路

积分
29
 楼主| 发表于 2021-7-19 18:09:50 | 显示全部楼层
hpdell 发表于 2021-7-19 09:54
你好,弱弱的问一下,这个是哪个例程的 还是你自己写的程序啊 ?

ThreadX NetDUO网络例程是安富莱的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115812
QQ
发表于 2021-7-20 08:56:03 | 显示全部楼层
hpdell 发表于 2021-7-19 09:54
你好,弱弱的问一下,这个是哪个例程的 还是你自己写的程序啊 ?

ThreadX NetXDUO网络协议栈教程更新记录贴,前6章已经发布(2021-03-29)
http://www.armbbs.cn/forum.php?m ... 4619&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-21 01:14 , Processed in 0.860726 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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