1

我有一个关于多播发送和接收的代码。它可以在使用 JDK 6 的 Mac 上运行。但是,当我更改为使用 JDK 7 时,它无法正常工作。

代码是这样的:

final InetAddress group = InetAddress.getByName("228.2.3.4");
final MulticastSocket socket = new MulticastSocket(2012);

socket.setReuseAddress(true);
socket.joinGroup(group);

final int length = 8 * 1024;
final byte[] bytes = new byte[length];
final DatagramPacket packet = new DatagramPacket(bytes, length);

while(true) 
{                       
socket.receive(packet);
    ...
}
...

使用JDK 7编译运行,VMware运行时无法运行。但是如果使用 JDK 6,即使 VMware 正在运行,它也可以工作。

此外,我尝试使用 WireShark 来监控适配器。而且我发现 WireShark 可以看到使用 JDK 7 运行我的程序时发送和接收的所有多播数据包。但是多播套接字无法接收任何内容。

有人对此有任何想法吗?谢谢你的帮助。

4

0 回答 0