Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 多播套接字不';在Mac上使用JDK 7时不起作用_Macos_Java_Multicastsocket - Fatal编程技术网

Macos 多播套接字不';在Mac上使用JDK 7时不起作用

Macos 多播套接字不';在Mac上使用JDK 7时不起作用,macos,java,multicastsocket,Macos,Java,Multicastsocket,我有一个关于多播发送和接收的代码。它可以使用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 in

我有一个关于多播发送和接收的代码。它可以使用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运行我的程序时看到所有发送和接收的多播数据包。但是多播套接字无法接收任何消息


有人知道吗?谢谢你的帮助。

我以前没有机会使用MultitcastSockets。你能发一些代码把包送到这个地址吗?它们只是发送的UDP数据报吗?发布一个sendPacket类,我会在windows上检查代码;看起来您在JRE7 for Mac中发现了一个bug。在套接字已绑定后调用setReuseAddress()无法完成任何操作。每次循环时,您都需要重置数据包的长度,否则它会一直收缩到目前为止接收到的最小长度。@Thom如果您以前没有使用过多播,很难理解您为什么要提供帮助,以及您为什么要在对其他人问题的评论中要求了解这一点。