1
|
Sam Holder Brian Adams · 技术社区 · 14 年前 |
![]() |
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,那么您的数据包就不会通过第一个路由器。 |
|
doguico · 如何在swift中实现多播套接字? 7 年前 |
![]() |
Shir · 通过特定网络接口发送IPv6多播数据包 7 年前 |
![]() |
AndroidX · 使用INADDR_ANY的目的和结果是什么? 8 年前 |
![]() |
akinKaplanoglu · Apache骆驼路由多播不会复制交换消息 10 年前 |
![]() |
Bernd Jacobi · 如何在所有连接的网络上发送UDP多播? 11 年前 |
![]() |
Sundae · 如何在NIO.2中实现多播客户端? 11 年前 |
|
Afonso Tsukamoto · 正在将本地UDP服务器信息获取到c中++ 12 年前 |