查看: 659|回复: 2

[讨论] 关于UDP协议

[复制链接]

该用户从未签到

27

主题

111

帖子

0

中级会员

Rank: 3Rank: 3

积分
449
最后登录
2024-3-29
发表于 2021-3-5 15:41:38 | 显示全部楼层 |阅读模式
最近用NXP官网的开发板调试UDP协议,发现第一次发送数据时,不会立即发出数据,而是经过ethernetif_input函数中etharp_update_arp_entry函数后才发送出数据,接着后面发送数据都没问题!网上找了很久,猜测大概是arp的问题,第一次因为arp缓存表里没有目的mac地址?有没有大佬知道其中的奥妙的?
回复

使用道具 举报

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
19941
最后登录
2024-4-19
发表于 2021-3-8 16:38:05 | 显示全部楼层
你的测试代码是来自SDK中的LWIP例程吗?
回复 支持 反对

使用道具 举报

该用户从未签到

27

主题

111

帖子

0

中级会员

Rank: 3Rank: 3

积分
449
最后登录
2024-3-29
 楼主| 发表于 2021-3-8 17:10:23 | 显示全部楼层
小恩GG 发表于 2021-3-8 16:38
你的测试代码是来自SDK中的LWIP例程吗?

LWIP中只有UDP回显例程(即先接收再发送),测试是没问题。目前找到原因了,因为先接收会更新arp缓存表,如果第一次直接发送,此时缓存表就没有当前目的MAC地址。

目前我的解决方法比较笨,加了一个全局标志,第一次发送个无效数据,就执行接收,检测arp表state是否为ETHARP_STATE_STABLE,是就跳出,再发真实要发的数据,就可以了。

应该是用发送arp请求代替我上述笨的方法吧。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-4-20 02:47 , Processed in 0.109415 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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