UdpClient无法在局域网中发送UDP广播包的解决办法
发布日期:2021-08-26 15:47:13 浏览次数:5 分类:技术文章

本文共 1582 字,大约阅读时间需要 5 分钟。

问题描述:

在XP或者Win7上面没有办法发送UDP广播报,发送的代码如下所示,应该没有问题。

1         ///  2         /// 发送消息 3         ///  4         /// 要发送的字符串 5         /// 
发送成功与否的标识
6 public bool SendMsg(string strDataToSend) 7 { 8 if (string.IsNullOrEmpty(strDataToSend)) return false; 9 10 UdpClient myUdpClient = new UdpClient();11 try12 {13 //让其自动提供子网中的IP广播地址14 IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, this.netInfo.SendPort);15 //将发送内容转换为字节数组16 byte[] bytes = Encoding.UTF8.GetBytes(strDataToSend);17 //向子网发送信息18 myUdpClient.Send(bytes, bytes.Length, iep);19 if (DataSended != null)20 {21 22 DataSended(Instance, new SendEventArgs(strDataToSend));23 }24 25 }26 catch (Exception err)27 {28 throw err;29 }30 finally31 {32 myUdpClient.Close();33 }34 35 return false;36 }

问题分析:

1、广播报是否可以发送出去

--我使用抓包工具,iptool。没有抓到我想要的数据包。但是可以收到别人发过来的广播包。(如下图)

                                                                  图1 抓包

2、是否与特定的电脑的配置有关

--我换了一台电脑,再抓包。发现这次可以抓到我想要的广播包了,也可以正常接收了。这条电脑是我们局域网内的服务器,一开始怀疑是不是因为防火墙的问题,后面把防火墙都关闭了,但是还是发现不行。后面,就想可能是网卡胚子的问题,打开不能发送广播包的电脑和可以发送广播报的主机对比一下,发现不能发送广播报的主机上都有安装虚拟机,也有虚拟网卡,尝试着将所有的虚拟网卡关闭,(如图2)然后再进行测试,终于都正常了,无论是Win7还是Xp。

                                           图2 禁用虚拟网卡

 

作者: 
出处: 
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载:http://www.cnblogs.com/kissazi2/archive/2012/12/07/2806533.html

转载地址:https://blog.csdn.net/weixin_33890499/article/details/90615228 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:简单工厂模式(设计模式02)
下一篇:android--显式跳转和隐式跳转的区别用法

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年03月25日 21时58分23秒