Windows 8.1 UDP多播

时间:2014-01-25 13:55:57

标签: java windows udp multicast

我遇到了从Windows 8.1获取UDP多播发送功能的问题。

以下简单测试程序可在同一主机上运行Windows 7或Ubuntu 13的接口桥接VM中运行。出于这个原因,我确信问题不在于java测试程序,也不在于物理网络配置。

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下的失败表现为无声失败,即消息不会到达远程主机。

我在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特定的?

1 个答案:

答案 0 :(得分:0)

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

与其他win8.1开发计划署问题的解决方案类似,似乎与其他操作系统不同,没有为UDP发送选择默认接口,因此成功的组播依赖于明确地为套接字分配接口。

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

一旦我这样做,就会按预期工作。