Windows 8.1 UDP组播

我有一个问题,使UDP多点传送从Windows 8.1工作。

以下简单的testing程序可以在同一主机上运行Windows 7或Ubuntu 13的接口桥接虚拟机内运行。 由于这个原因,我相信这个问题是不是与Javatesting程序,或与物理networkingconfiguration。

import java.net.*; public class multicast_send { public static void main(String[] args) throws Exception { DatagramSocket socket = null; DatagramPacket outPacket = null; socket = new DatagramSocket(); String msg = "Multicast Test"; outPacket = new DatagramPacket(msg.getBytes(), msg.getBytes().length, InetAddress.getByName("230.0.0.1"), 4446); socket.send(outPacket); System.out.println("Server sent : " + msg); socket.close(); } } 

在Windows 8.1下的失败performance为一个沉默的失败,即消息只是不到达远程主机。

我在Windows 8.1主机上使用了WireShark,没有看到UDP数据包被发送的证据。

Windows 8.1防火墙被禁用。

我尝试了一系列的多播地址和端口结果相同(Win7,Ubuntu,而不是Windows 8.1)

从浏览互联网我注意到有几个关于在Windows 8.1中引入的UDP多播问题的描述; 但这种情况似乎不符合问题的描述。

在这三种情况下,java环境都是1.7.0.51b13。

是否有一些隐藏的小工具,我需要在Windows 8.1中调整,以启用多播UDP? 有没有一个明显的代码问题,我没有发现哪个是Windows 8.1特定的?

解决方案是,Windows 8.1可以访问多个接口,以太网适配器和多个VM桥接适配器。

类似于其他win8.1开发计划署问题的解决方法,似乎与其他操作系统不同,没有为UDP发送选择默认接口,所以成功的多播依赖于显式地分配接口到套接字。

Socket.setinetrface.getbyname(“以太网适配器的IP地址”)

只要我这样做,它按预期工作。