我有一个关于多播发送和接收的代码。它可以在使用 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 运行我的程序时发送和接收的所有多播数据包。但是多播套接字无法接收任何内容。
有人对此有任何想法吗?谢谢你的帮助。