gpt4 book ai didi

java-使用multicastSocket,接收者无法接收广播

转载 作者:太空宇宙 更新时间:2023-11-04 11:30:10 24 4
gpt4 key购买 nike

学习java MulticastSocket,同一局域网内只有 native 可以接收广播,其他设备不能。为什么?是路由器设置问题还是广播地址设置问题?发送.java

public class sentServer {
public static void main(String[] args) {
String host = "224.0.0.1";
int port = 9998;String message = "test-multicastSocket";
try {
InetAddress group = InetAddress.getByName(host);
MulticastSocket s = new MulticastSocket();
s.joinGroup(group);
DatagramPacket dp = new DatagramPacket(message.getBytes(),message.length(),group,port);
s.send(dp);
s.close();
} catch (UnknownHostException e)
{
e.printStackTrace();
} catch (IOException e)
{e.printStackTrace();
}
}
}

这里设置的监听地址是224.0.0.1

recevier.java

public class reClinet {
public static void main(String[] args) {
String host="224.0.0.1";
int port=9998;
int length=1024;
byte[] buf=new byte[length];
MulticastSocket ms=null;
DatagramPacket dp=null;
StringBuffer sbuf=new StringBuffer();
try {
ms=new MulticastSocket(port);
dp=new DatagramPacket(buf,length);
InetAddress group=InetAddress.getByName(host);
ms.joinGroup(group);
System.out.println("port is open");
ms.receive(dp);
ms.close();
int i;
for(i=0;i<1024;i++){
if(buf[i]==0){
break;
}
sbuf.append((char)buf[i]);
}
System.out.println("message"+sbuf.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
}

`谢谢

最佳答案

如果您问:为什么只有连接到同一网段的系统才能看到广播?

这就是 broadcasts本质在Java中:客户端连接到特定的服务器;并加入广播组;然后该客户将收到通知。

如果客户没有收到这些通知;你必须检查你的网络设置、防火墙……

关于java-使用multicastSocket,接收者无法接收广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43887170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com