java实现在udp协议下进行数据的传输

本文通过实例展示了如何使用UDP协议创建一个简单的聊天室。首先介绍了UDP的特点,包括其无连接性、快速传输和数据安全性低。然后分别展示了发送端和接收端的Java代码实现,强调了运行顺序的重要性,即接收端必须先运行,否则无法接收到数据。这个实例为理解UDP的基础应用提供了清晰的步骤。

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

udp的特点:

1、面向无连接

2、传输速度较快

3、传输数据不安全,数据容易丢失

一、创建发送文件send.class

        //1、创建Socket对象
        DatagramSocket ds = new DatagramSocket();
        //2、写数据
        String data = "约吗.....";
        //3、创建数据包对象,讲数据封装到里面
        DatagramPacket dp = new DatagramPacket(data.getBytes(),data.getBytes().length,                     
        InetAddress.getByName("192.168.0.17"),10086);
        //4、发送
        ds.send(dp);
        //5、关闭
        ds.close();

二、创建接收文件Recive.class

        //1、创建Socket对象
        DatagramSocket ds = new DatagramSocket(10086);
        //2、创建数据包对象
        byte[] bys = new byte[1024];
        DatagramPacket dp = new DatagramPacket(bys, bys.length);
        //3、接收数据
        ds.receive(dp);
        //4、解析数据
        //获取地址
        String ip = dp.getAddress().getHostAddress();
        //获取数据
        String data = new String(bys, 0, dp.getLength());
        System.out.println(ip + "----" + data);
        //5、释放资源
        ds.close();

三、udp实现聊天室

1、发送端

        //1、创建Socket对象
        DatagramSocket ds = new DatagramSocket();
        while (true) {
            Scanner sc = new Scanner(System.in);
            //2、写数据
            String data = sc.next();
            //3、创建数据包对象,讲数据封装到里面
            DatagramPacket dp = new DatagramPacket(data.getBytes(), data.getBytes().length, 
            InetAddress.getByName("192.168.0.17"), 10086);
            //4、发送
            ds.send(dp);
            if ("886".equals(data)) {
                break;
            }
        }
        //5、关闭
        ds.close();

2、接收端

        //1、创建Socket对象
        DatagramSocket ds = new DatagramSocket(10086);
        while (true) {
            //2、创建数据包对象
            byte[] bys = new byte[1024];
            DatagramPacket dp = new DatagramPacket(bys, bys.length);
            //3、接收数据
            ds.receive(dp);
            //4、解析数据
            //获取地址
            String ip = dp.getAddress().getHostAddress();
            //获取数据
            String data = new String(bys, 0, dp.getLength());
            System.out.println(ip + ": " + data);
        }
        //5、释放资源
        //ds.close();

备注:运行顺序,必须先运行recive,后者运行send,不然接收不到数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值