关于W5500芯片UDP发送报文到不同IP的问题

jinjing910 2020-09-01 08:48:07
向各位大侠们请教一下关于W5500芯片UDP发送报文到不同IP的问题!


电路板上的DSP通过SPI配置W5500,建立了3个socket,采用UDP点对点模式通过交换机向3台电脑(3个IP地址)发送同样的报文,每个socket每秒发送1次。问题描述如下:
1、3个电脑都连接网线时,接收UDP报文均正常;
2、只有2个电脑连接网线时,每秒时,期望每台电脑只收到1组报文,但实际测试时一台电脑收到1组报文,另一台电脑收到2组报文;
3、只有1个电脑连接网线时,每秒时,期望该电脑只收到1组报文,但实际测试时该电脑收到3组报文。不经过交换机时,也是同样的现象。


问题归纳:
1、W5500向3个IP发UDP报文,无论所连接电脑是1台、2台或3台,所收到的总报文数始终是3组,只是这3组报文会分配到已连接网线电脑上;
2、连接电脑1台或2台时,从每秒3组报文的时标可以看出,有1组报文是上一秒的,有2组报文是本次的。


疑问:
1、我之前理解的是:UDP发送报文时只需设置目的IP和目的端口就行了,未连接的IP被直接忽略,报文丢掉,而不应该发送到另外的IP上去?
2、是否需要实时去查询已连接的IP,确认连接的可发送,未连接的就不发送。如果如此,该如何实现?
3、W5500的强制ARP是否与此有关?

谢谢!
...全文
9390 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gothic 2022-05-07
  • 打赏
  • 举报
回复

同样问题,可以探讨下吗

X-i-n 2020-09-04
  • 打赏
  • 举报
回复
可以一个也可以三个。问题应该还是在你的代码。
jinjing910 2020-09-04
  • 打赏
  • 举报
回复
引用 2 楼 X-i-n 的回复:
UDP的特性之一就是无连接,除非对方会回复消息,否则无法得知对方是否可达,无法得知是否收到; 你在问题里遇到的情况,应该是你代码本身的逻辑有问题造成的。请仔细检查代码。一旦确定了IP、协议、端口,就一定不会发生这种发错的情况。
检查了一下代码逻辑,发现只初始化了一个socket 0,UDP模式,每秒周期到后分别向3个IP发同样的报文(报文间加有少许延时)。 这种使用方式是否有问题,是不是应该建立3个socket,再分别向3个IP发报文?
X-i-n 2020-09-02
  • 打赏
  • 举报
回复
UDP的特性之一就是无连接,除非对方会回复消息,否则无法得知对方是否可达,无法得知是否收到; 你在问题里遇到的情况,应该是你代码本身的逻辑有问题造成的。请仔细检查代码。一旦确定了IP、协议、端口,就一定不会发生这种发错的情况。
sichuanwww 2020-09-02
  • 打赏
  • 举报
回复
3个IP?能收到目的IP不是自己的数据报? 加一个序号或者时间戳应该可以。

1,748

社区成员

发帖
与我相关
我的任务
社区描述
网络协议与配置相关内容讨论专区
网络协议网络安全tcp/ip 技术论坛(原bbs)
社区管理员
  • 网络协议与配置社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧