|
|
public class Server extends Thread {private int PORT = 2012;// 发送组播信息的目标端口private String IP = "225.0.0.0";// 用于组播的IPpublic void sendMsg() throws IOException {while (true) {String msg = "这是组播发的消息!";byte[] date = msg.getBytes();// 创建组播地址对象InetAddress address = InetAddress.getByName(IP);// 数据包,将其发送到网关上java.net.DatagramPacket packet = new java.net.DatagramPacket(date,date.length, address, PORT);// 创建组播Socket,随机分配一个端口来进行组播信息的发送java.net.MulticastSocket socket = new java.net.MulticastSocket();try {// 发送组播的消息socket.send(packet);System.out.println("组播发的消息是:" + msg);Server.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}public static void main(String args[]) throws IOException {Server s = new Server();s.sendMsg();}}
public class Client {private int PORT = 2012;// 接收组播信息的端口private String IP = "225.0.0.0";// 用于组播的IPpublic void reciveMsg() throws Exception {// 创建组播地址对象InetAddress address = InetAddress.getByName(IP);byte[] date = new byte[100];// 接收信息的数据包对象java.net.DatagramPacket packet = new java.net.DatagramPacket(date,date.length);// 创建组播Socket对象,在特定的端口上接收数据java.net.MulticastSocket socket = new java.net.MulticastSocket(PORT);// 加入到组中,才可以接收到消息socket.joinGroup(address);while (true) {socket.receive(packet);String s = (new String(date).trim() + "from" + packet.getAddress()+ ":" + packet.getPort());System.out.println("收到:" + s);}}public static void main(String args[]) throws Exception {Client c = new Client();c.reciveMsg();}} |
|