您的位置:首页 > 其它

UdpClient无法在局域网中发送UDP广播包的解决办法

2012-12-07 09:12 441 查看
问题描述:

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

/// <summary>
/// 发送消息
/// </summary>
/// <param name="strDataToSend">要发送的字符串</param>
/// <returns>发送成功与否的标识</returns>
public bool SendMsg(string strDataToSend)
{
if (string.IsNullOrEmpty(strDataToSend)) return false;

UdpClient myUdpClient = new UdpClient();
try
{
//让其自动提供子网中的IP广播地址
IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, this.netInfo.SendPort);
//将发送内容转换为字节数组
byte[] bytes = Encoding.UTF8.GetBytes(strDataToSend);
//向子网发送信息
myUdpClient.Send(bytes, bytes.Length, iep);
if (DataSended != null)
{

DataSended(Instance, new SendEventArgs(strDataToSend));
}

}
catch (Exception err)
{
throw err;
}
finally
{
myUdpClient.Close();
}

return false;
}


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

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



图1 抓包

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

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



图2 禁用虚拟网卡
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐