【发布时间】:2018-10-12 09:44:30
【问题描述】:
我需要在多播中发送和接收。
这是我的发件人:
public static void main(String[] args) {
MulticastSocket socket = null;
try {
socket = new MulticastSocket(3575);
int n = 1;
while (n <= 100) {
byte[] buf = new byte[256];
// non aspetta la richiesta
String dString = new Date().toString();
buf = dString.getBytes();
// invia il messaggio in broadcast
InetAddress group = InetAddress.getByName("230.0.0.1");
DatagramPacket packet = new DatagramPacket(buf, buf.length, group, 3575);
socket.send(packet);
System.out.println ("Broadcasting: "+dString);
Thread.sleep(1000);
n++;
}
socket.close();
}catch(Exception e) { e.printStackTrace(); socket.close();}
}//main
这是我的接收器:
public static void main(String[] args) throws IOException {
MulticastSocket socket = new MulticastSocket(3575);
InetAddress group = InetAddress.getByName("230.0.0.1");
socket.joinGroup(group);
DatagramPacket packet;
for (int i = 0; i < 100; i++) {
byte[] buf = new byte[256];
packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
String received = new String(packet.getData()).trim();
System.out.println("Time: " + received);
}
socket.leaveGroup(group);
socket.close();
}//main
当我运行它们时,接收器没有收到任何东西。 我在禁用了防病毒和防火墙的两台不同的 PC(均装有 Windows)上进行了尝试。我还尝试了不同的局域网:我的路由器,我的手机热点。 它在本地机器上也不起作用。
我该如何解决这个问题? 谢谢
【问题讨论】:
-
你不是在广播,你是在多播。如果此应用程序在 Internet 上运行,则需要路径中所有 ISP 的合作。
-
检查多播是否启用:serverfault.com/questions/262634
-
@EJP 应用程序通过 LAN 运行。我不需要互联网。
-
@StephenC 这是结果:Ambito Riferimenti Ultimo Indirizzo ---------- ----------- ------ ---- ----------------------------- 0 0 SÌ 224.0.0.1 0 2 SÌ 224.0.0.251 0 1 SÌ 224.0.0.252 0 1 SÌ 239.255.255.250
标签: java windows sockets multicast receiver