zoukankan      html  css  js  c++  java
  • UdpClient无法在局域网中发送UDP广播包的解决办法

    问题描述:

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

     1         /// <summary>
     2         /// 发送消息
     3         /// </summary>
     4         /// <param name="strDataToSend">要发送的字符串</param>
     5         /// <returns>发送成功与否的标识</returns>
     6         public bool SendMsg(string strDataToSend)
     7         {
     8             if (string.IsNullOrEmpty(strDataToSend)) return false;
     9 
    10             UdpClient myUdpClient = new UdpClient();
    11             try
    12             {
    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             finally
    31             {
    32                 myUdpClient.Close();
    33             }
    34 
    35             return false;
    36         }

    问题分析:
    1、广播报是否可以发送出去

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

                                                                      图1 抓包

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

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

                                               图2 禁用虚拟网卡


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

  • 相关阅读:
    js倒计时的实现
    用Math获取随机数的方法抽奖
    计算器的实现
    放大镜
    关于轮播图,我知道的不多。
    jqery标签页
    jQuery鼠标划入划出
    说说手机页面
    简单说说tab标签页和轮播图
    前端中的那些小事
  • 原文地址:https://www.cnblogs.com/kissazi2/p/2806533.html
Copyright © 2011-2022 走看看