java使用本地广播,绑定到IPAddress.Any的UdpClient广播与本地IP地址之间的差异

我发誓这是最近工作,但似乎停止了,我想不出它可能是什么 .

我正在使用UdpClient将SNMP数据包广播到本地/ 24子网上的端口161,然后侦听响应 . 在c#中它如下(我正在使用SnmpSharpNet)

SnmpV2Packet packet = new SnmpV2Packet("public");

packet.Pdu.VbList.Add("1.3.6.1.2.1.1.1.0"); //System Description OID

packet.Pdu.VbList.Add("1.3.6.1.2.1.1.2.0"); //sysObjectId

packet.Pdu.VbList.Add("1.3.6.1.2.1.1.5.0"); //sysName*

byte[] data = packet.encode();

UdpClient udpClient = new UdpClient();

// udpClient.Client.Bind(new IPEndPoint(IPAddress.Parse("192.168.2.xx"), 161));

udpClient.Client.Bind(new IPEndPoint(IPAddress.Any, 161));

IPEndPoint ip = new IPEndPoint(IPAddress.Parse("255.255.255.255"), 161);

udpClient.Send(data, data.Length, ip);

...我有一个在后台线程中运行的监听器,它监听响应并打印IP地址和snmp信息 . 我已经在远程服务器上运行它,只有Windows防火墙和udp / 161打开入站和出站,它按预期工作 .

以前,我在我的域连接机器上运行它,它也工作正常,但现在它没有...意味着我只得到169.254.xx.xx地址的响应,而不是我的局域网上的其他设备 .

如果我在绑定上切换注释并绑定到我的本地计算地址,它再次按预期运行 .

我意识到必须改变的东西,但不能为我的生活弄清楚有什么不同 . 我已经尝试发送到本地广播地址(192.168.2.255),这实际上是有效的 .

我也尝试打开端口161进行发送和接收(Udp),并尝试打开我在Windows防火墙中使用的测试应用程序的所有端口 .

我希望有人能够帮助我理解如何正确地正确地向本地网络广播,因为我可能误解了广播地址可能会受到防火墙和/或绑定的影响 .

干杯

克雷格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值