分布式通信-tcp/ip 广播

服务端

/**
 *  广播
 */
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();
        }
    }
}
原文地址:https://www.cnblogs.com/newlangwen/p/10383850.html