关于组播数据包“发不出去",c#无法接收

问题一:发不出去

  最近做一个小东西改进方案需要用到组播,简单来说就是我先作为服务器端组播发送设备编号,然后组播成员作为客户端接收消息后先确认对方是不是在呼叫我。是的话就返回一个消息,这样我服务器端就可以知道客户端的IP地址,从而建立TCP连接。

  但是在这个过程中一波三折。。。

  windows下发送组播消息,树莓派却无法接收到这个组播消息,然后使用wireshark抓包看看数据包发出去没有,结果也没看见往这个组播地址发送的消息。纳尼?我的数据包被谁偷吃了吗!!!然后上网找解决方案,关闭防火墙,设置端口,设置出入站规则等,然而发现并没有什么卵用~~~这就很烦躁了,我的数据包呢!

  苦寻答案无果,偶然的机会,看到可以查最近加入的组播组(netsh interface ipv4 show joins),然后发现了罪恶之源!

       ——————华丽的分割线————————

  电脑会存在很多虚拟网卡,在发送组播消息的时候通过其他虚拟网卡发送出去了!而这边树莓派不在这个网段之类!当然收不到这个组播数据包! 原来是你!偷吃了我的蛋糕!

 

   好吧!关掉关掉关掉!只留下同一子网下的网卡就好了!OK!大功告成!

 

问题二:无法接收

  这边作为客户端,收到消息后确认是在叫我当然要礼貌性的回复消息啦!UDP接收消息后会知道发送端的地址,我的做法就按照这个地址返回一个UDP数据包!

  那么问题又来了,我接收不到!(因为我两端都用C语言写的时候是实现了这个功能的,因为项目原因客户端代码是C语言,服务器端是C#,所以这边改为C#)为什么!这么点东西要这么折磨我!开始以为我的代码写错了(好吧,估计就是我的代码写错了),网上各种找,各种试验也不行啊!

  好像说C#这边接收不能接收不知道对端IP的数据包(真实性有待考察),C和C#不是亲戚吗?为什么你大哥行你就不行(好像不是亲戚)。。。

  没办法,改变策略。

  解决方案:

  这边返回消息也用组播方式,这边也用组播方式接收消息。好吧,这样总行了吧!

  

转载于:https://www.cnblogs.com/waphoo-blogs/p/10974526.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值