Java UDP 广播、组播使用--系列1

本文介绍了UDP的广播和组播概念,通过Java代码展示了客户端和服务端如何进行UDP广播通信和组播通信。在广播中,服务器向255.255.255.255地址发送数据,客户端监听特定端口接收。在组播中,客户端加入特定组播地址和端口接收数据,服务器同样向该地址发送数据。组播地址范围和永久组、临时组的区别也进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.UDP广播。
客户端开启一个端口监听数据,服务器端指定该端口发送数据,客户端即可收到数据,服务器绑定的广播地址为255.255.255.255

客户端监听:

public class BroadcastClient {
    private int MessageIndex = 0;
    private int port = 6787;//数据监听绑定端口
    private boolean closed = false;


    public void start() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("BroadcastClient start ");
                runClient();
            }
        }).start();
    }

    DatagramSocket socket = null;

    private void runClient() {
        try {
            byte[] receiveBuffer = new byte[1024];//数据缓冲区
            socket = new DatagramSocket(port);//绑定端口进行数据监听
            DatagramPacket receivePacket = new DatagramPacket(receiveBuffer, receiveBuffer.length);//数据接收包囊
            while (!closed) {
                count();//计算数量,超过五十次关闭连接
                socket.receive(receivePacket);//接收数据
                System.out.println("received packet from " + receivePacket.getAddress().getHostAddress() + " : " + receivePacket.getPort());
                String msg = new String(receivePacket.getData(), receivePacket.getOffset(), receivePacket.getLength());
                System.out.println("received " + msg);
                Thread.sleep(2000);
            }
            System.out.println("socket close ");
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void count() {
        MessageIndex++;
        if (MessageIndex >= 50) {
            closed = true;
        }
    }


    public static void main(String[] s) {
        BroadcastClient client = new BroadcastClient();
        client.start();
    }
}

//运行效果

BroadcastClient start 
received packet from 192.168.2.221 : 58458
received hello ,message from server,0
received packet from 192.168.2.221 : 58460
received hello ,message from server,1
received packet from 192
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值