udp 发送一个广播后接收不到数据

czcb 2010-12-09 03:45:50
程序首先发送一个字符串到广播地址 255.255.255.255

然后开始接收返回的数据

UdpClient myUdpClient = new UdpClient();
try
{
IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, 10000);
myUdpClient.EnableBroadcast = true;
myUdpClient.Send(senddata, senddata.Length, iep);

IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
Byte[] receiveBytes =myUdpClient.Receive(ref RemoteIpEndPoint);
string returnData = Encoding.ASCII.GetString(receiveBytes);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "发送失败");
}

现在receiveBytes 返回是null

请指点一下 原来么用过udp
...全文
1142 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
czcb 2010-12-09
  • 打赏
  • 举报
回复
to Laputa_Island

现在按照我的流程

myUdpClient.Available 数据数量是我要的数量

不过现在就是 receiveBytes 是null
Laputa_Island 2010-12-09
  • 打赏
  • 举报
回复
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
Byte[] receiveBytes =myUdpClient.Receive(ref RemoteIpEndPoint);
这个也很使我疑惑,你连相应的端口都没有帮顶,怎么能接收到数据呢?
Laputa_Island 2010-12-09
  • 打赏
  • 举报
回复
UdpClient myUdpClient = new UdpClient();
这个没有设置
应该配置udpclient监听10000号端口
你这样弄的话,myUdpClient 发送是使用任意端口发送,同样也是任意端口(与发送段都相同)接收
czcb 2010-12-09
  • 打赏
  • 举报
回复
会啊

Search_Resp(搜索响应命令)
1) 硬件收到 Search_Req 命令后,应向网络广播此命令来报告自己的网络配置和产品信息。
湖中仙人 2010-12-09
  • 打赏
  • 举报
回复
你的硬件会自己返回数据吗?
czcb 2010-12-09
  • 打赏
  • 举报
回复
有没有人帮忙解决啊 弄了2天了
czcb 2010-12-09
  • 打赏
  • 举报
回复
Search_Req(搜索命令)
1) 监控用户向网络广播此命令,以希望获得连接在局域网中的所有硬件的基本信息
2) 操作码:0
3) 发送方向:监控用户 -> 广播地址(地址为255.255.255.255,端口为 10000)

Search_Resp(搜索响应命令)
1) 硬件收到 Search_Req 命令后,应向网络广播此命令来报告自己的网络配置和产品信息。
2) 操作码:1
3) 发送方向: 摄像头 -> 广播地址 (地址为255.255.255.255, 端口为 Search_Req
命令的源端口)
czcb 2010-12-09
  • 打赏
  • 举报
回复
to sp1234
由于发送信息以后 只有很小的间隔就有数据了(几乎没有间隔时间)

to heiwer
用监听工具监听的

我这里发出以后 局域网内的硬件已经正常返回了一条信息了
deepmist 2010-12-09
  • 打赏
  • 举报
回复
255.255.255.255这个ip怎么会返回数据给你?
给个例子你看马上就会明白
http://www.cnblogs.com/tuyile006/archive/2006/12/30/607823.html
heiwer 2010-12-09
  • 打赏
  • 举报
回复
你确定你发送过去的,能收到,并且返回了没?
下个软件,监听下端口,有没1000端口的数据流通。

  • 打赏
  • 举报
回复
想绑定一个本地监听端口,应该实例化时 new UdpClient(endpoint);
  • 打赏
  • 举报
回复
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
Byte[] receiveBytes =myUdpClient.Receive(ref RemoteIpEndPoint);

这样写法没有意义,等于:

IPEndPoint RemoteIpEndPoint = null;
Byte[] receiveBytes =myUdpClient.Receive(ref RemoteIpEndPoint);
czcb 2010-12-09
  • 打赏
  • 举报
回复
是发送到255.255.255.255这个地址的10000端口

然后局域网内有硬件接收到这个信息以后会广播他的信息

我现在就是要接收到硬件发送的信息
qldsrx 2010-12-09
  • 打赏
  • 举报
回复
你广播是发送给10000端口的,但是你的UdpClient监听的是随机端口,不是10000端口,自然不可能收到数据。另外自己发的数据自己收,从未听说过,一般再创建一个UdpClient监听本机10000端口,用户接收。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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