服务端
/**
* 广播
*/
public class MulticastServer { public static void main(String[] args) { try { //地址是224.0.0.0 --239.255.255.255
InetAddress group = InetAddress.getByName("225.0.0.0"); MulticastSocket socket = new MulticastSocket(); for(int i=0;i<10;i++){
String data ="hello world";
byte[] bytes = data.getBytes();
socket.send(new DatagramPacket(bytes,bytes.length,group,8888));
System.out.println("send data");
TimeUnit.SECONDS.sleep(2);
} } catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
客户端,可以同时有多个客户端
public class MulticastClient { public static void main(String[] args) {
//地址是224.0.0.0 --239.255.255.255
try {
InetAddress group = InetAddress.getByName("225.0.0.0"); MulticastSocket socket = new MulticastSocket(8888); socket.joinGroup(group); // 加到指定的組裡面
byte[] buf = new byte[256];
while (true){
DatagramPacket msgPacket = new DatagramPacket(buf, buf.length);
//读不到一直处于阻塞状态
socket.receive(msgPacket);
System.out.println("receive data");
String msg = new String(msgPacket.getData());
System.out.println("接收到的数据:"+msg);
} } catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}