硬汉嵌入式论坛

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

[ThreadX全家桶] 测试ThreadX NetXDUO的函数nx_tcp_socket_create无法进入urgent_data_callback回调

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115893
QQ
发表于 2022-1-14 15:34:36 | 显示全部楼层 |阅读模式


不知道这个是怎么个玩法。

测试了下没效果:

  1.          /* 创建TCP Socket */
  2.         ret = nx_tcp_socket_create(&ip_0,                 /* IP实例控制块 */   
  3.                                    &TCPSocket[i],            /* TCP控制块 */
  4.                                    "TCP Server Socket",   /* TCP Socket名 */
  5.                                    NX_IP_NORMAL,          /* IP服务类型 */
  6.                                    NX_FRAGMENT_OKAY,      /* 使能IP分段 */
  7.                                    NX_IP_TIME_TO_LIVE,    /* 指定一个 8 位的值,用于定义此数据包在被丢弃之前可通过的路由器数目 */
  8.                                    4320,                  /* TCP Socket接收队列中允许的最大字节数 */
  9.                                    urgent_data_callbac,   /* 用于在接收流中检测到紧急数据时调用的回调函数 */
  10.                                    NX_NULL);              /* TCP Socket另一端发出断开连接时调用的回调函数 */
复制代码


回复

使用道具 举报

1

主题

75

回帖

78

积分

初级会员

积分
78
发表于 2022-1-14 15:39:26 | 显示全部楼层
用Wireshark抓包看看对方发过来的数据包中,URG位是否设置了。只要设置这个位的数据包才会触发回调函数。
Screenshot 2022-01-14 153804.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115893
QQ
 楼主| 发表于 2022-1-14 15:54:34 | 显示全部楼层
catro 发表于 2022-1-14 15:39
用Wireshark抓包看看对方发过来的数据包中,URG位是否设置了。只要设置这个位的数据包才会触发回调函数。

这种玩法的话,那不合适了,我以为这个是数据接收回调,用户可以设置回调函数,在回调里面接收。
回复

使用道具 举报

1

主题

75

回帖

78

积分

初级会员

积分
78
发表于 2022-1-14 16:29:40 | 显示全部楼层
所有TCP数据的回调函数是这个:nx_tcp_socket_receive_notify
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115893
QQ
 楼主| 发表于 2022-1-14 16:37:50 | 显示全部楼层
catro 发表于 2022-1-14 16:29
所有TCP数据的回调函数是这个:nx_tcp_socket_receive_notify

感谢,试试。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115893
QQ
 楼主| 发表于 2022-1-14 17:02:14 | 显示全部楼层
catro 发表于 2022-1-14 16:29
所有TCP数据的回调函数是这个:nx_tcp_socket_receive_notify

测试了下,应该是不能在这个回调函数里面调用发送函数,测试了下会进入硬件异常

nx_tcp_socket_send
回复

使用道具 举报

1

主题

75

回帖

78

积分

初级会员

积分
78
发表于 2022-1-14 17:25:19 | 显示全部楼层
eric2013 发表于 2022-1-14 17:02
测试了下,应该是不能在这个回调函数里面调用发送函数,测试了下会进入硬件异常

nx_tcp_socket_send

可以调用的,只是无法阻塞等待,能看下哪一步导致的硬件异常吗?或者贴一下代码看看
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115893
QQ
 楼主| 发表于 2022-1-14 17:31:35 | 显示全部楼层
catro 发表于 2022-1-14 17:25
可以调用的,只是无法阻塞等待,能看下哪一步导致的硬件异常吗?或者贴一下代码看看

谢谢,成功了,我以为进入这个函数就不用调用函数nx_tcp_socket_receive了,实际上还是要调用这个函数。
回复

使用道具 举报

10

主题

130

回帖

160

积分

初级会员

积分
160
发表于 2022-1-17 10:47:55 | 显示全部楼层
测试了一下 可以进的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115893
QQ
 楼主| 发表于 2022-1-17 11:02:07 | 显示全部楼层
oneV 发表于 2022-1-17 10:47
测试了一下 可以进的

可以进入,玩法搞错了,我之前以为这个函数是接收回调。
回复

使用道具 举报

10

主题

130

回帖

160

积分

初级会员

积分
160
发表于 2022-1-17 11:44:49 | 显示全部楼层
eric2013 发表于 2022-1-17 11:02
可以进入,玩法搞错了,我之前以为这个函数是接收回调。

TCP的紧急模式就是发送的时候将相应标志位(URG)置位接收就会有这个响应,但好像这个模式是废弃的,应该也不用去研究了。
回复

使用道具 举报

3

主题

44

回帖

53

积分

初级会员

积分
53
发表于 2024-7-23 18:43:07 | 显示全部楼层
/* TCP Socket接收队列中允许的最大字节数 */  4320  请教大佬,这个值设置有参考依据吗      
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115893
QQ
 楼主| 发表于 2024-7-24 07:53:54 | 显示全部楼层
dykonka 发表于 2024-7-23 18:43
/* TCP Socket接收队列中允许的最大字节数 */  4320  请教大佬,这个值设置有参考依据吗

这个我一直用的默认大小。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-25 14:13 , Processed in 0.517240 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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