我有两个iMac坐在同一个网络上。一个是老的,运行莫哈韦另一个是新的,运行卡塔琳娜。两者都使用java8,并且都收听相同的多播频道。旧的接收多播很好,新的没有。
tcpdump显示数据包正在新机器上接收,但是java多播侦听器没有显示它们。
以下是java多播侦听器代码:
import java.io.*;
import java.net.*;
public class MulticastListenerBare {
public MulticastListenerBare(String ip, int port) {
try {
InetAddress group = InetAddress.getByName(ip);
MulticastSocket sin = new MulticastSocket(port);
sin.joinGroup(group);
byte[] buf = new byte[64*1024];
DatagramPacket pin = new DatagramPacket(buf, buf.length,
group, port);
System.out.printf("Listening to %s : %d\n", ip, port);
while (true) {
sin.receive(pin);
String data = new String(buf, 0, pin.getLength());
System.out.println("Received: \n" + data);
}
}catch (IOException e) {
System.out.println("Error: " + e.getMessage());
}catch (Throwable t) {
System.out.println("Unknown Throwable happened: " + t.getMessage());
}
}//constructor
public static void main(String[] args) {
if(args.length != 2) {
System.out.println
("usage: java -Djava.net.preferIPv4Stack=true " +
"MulticastListener ip port\n");
System.exit(-1);
}
try {
int port = Integer.parseInt(args[1]);
new MulticastListenerBare(args[0], port);
}catch(NumberFormatException e) {
System.out.println("error parsing port #: '" + args[1] + "'");
}
}//main
}//MulticastListenerBare
在catalina的系统首选项“security&privacy”下,我已经授予java和terminal完全磁盘访问权限。
程序从终端运行如下: java -Djava.net.preferIPv4Stack=true MulticastListenerBare 239.192.2.25 52025
你知道为什么它不接多播吗?
暂无答案!
目前还没有任何答案,快来回答吧!