|
1
|
| Sam Holder Brian Adams · 技术社区 · 15 年前 |
|
|
1
5
所以问题是,由于我有一个以上的活动网络连接,它选择了一个并使用它,这导致UDP数据包在客户端监听的另一个网络连接上被发送出去。因为我安装了虚拟机,所以它安装并激活了仅限虚拟机的网络适配器,这样就可以支持仅限主机的网络连接。当我将virtualbox切换到仅主机模式时,数据包开始被接收。禁用virtualbox适配器并切换回桥接连接也有效。 |
|
|
2
2
如果有多个接口, 正确的 答案是听所有的,如果你对什么是正确的没有一个定义,就不要试图选择一个。
下面是我如何实现一个UDP发现服务。最初,它中断了,因为我的虚拟机接口挡住了路,吞没了随机IP子网(192.168.56.x)上的UDP广播,而不是我的实际以太网连接(192.168.0.x)。所以我改进了它,基于Guge的回答。这有点冗长,我可能没有用最简洁的方式编写代码,但现在可以工作了。我在所有接口上广播,然后
接收所有接口上的数据(循环),直到超时,或单个响应(如果
出于某种原因,ipv6接口会破坏udp部分,所以我只是过滤掉ipv4地址。如果这两者都有办法的话,请纠正我。
|
|
|
3
1
我会试试的 Wireshark . |
|
|
4
1
这里有几个问题需要研究。 第一个问题是:你确定多播是最好的方式吗?我认为广播对你更有帮助。 另一个是:路由器通常不转发多播或广播,交换机和集线器也不转发。 请看以下两个问题: Why are (UDP multicast) packets not being received? 和 UDP Multicast over the internet? 编辑: 创建UDPClient时,可以指定从哪个本地端点发送。 http://msdn.microsoft.com/en-us/library/k227d11f.aspx |
|
|
5
1
在您的代码中,您不设置调用udpclient的TTL。因此,如果默认的TTL是1,那么您的数据包就不会通过第一个路由器。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |