Java----网络编程-----UDP编程

UDP:不是面向连接的协议,它是以数据为中兴的协议,它的特点:数据的可靠性较差,数据容易丢失,但是它的效率高

一、类DatagramSocket DatagramPacket

客户端
   1、创建客户端使用 DatagramSocket 类 + 端口 (指定:我的数据从那个端口出去).
   2、准备数据 只不过这些数据需要装配到字节数组中去.
   3、将数据打包使用 DatagramPacket + 服务器地址及端口号 来完成打包.
   4、发送.
   5、释放资源.

服务器端
   1、创建服务器端使用 DatagramSocket 类 + 端口 (指定:我从那个端口获得数据).
   2、准备接收数据 同样需要定义一个字节数组 封装 DataGramPacket .
   3、接收数据.
   4、分析数据.
   5、释放资源.

例:模拟

         public static void main(String[] args) {
        //创建客户端使用 DatagramSocket 类 + 端口 (指定:我的数据从那个端口出去)
           DatagramSocket client = null;
           DatagramPacket packet = null;
           // 准备数组.
           byte[] data = null;
           try {
            client = new DatagramSocket(8888);
            //准备数据 只不过这些数据需要装配到字节数组中去.
            String msg = "XXXXXXXXXXX";
            data = msg.getBytes();
            //将数据打包使用 DatagramPacket + 服务器地址及端口号 来完成打包.
            packet = new DatagramPacket(data, data.length,new InetSocketAddress("127.0.0.1",8888));
            //发送
            client.send(packet);
            //释放资源.
            client.close();            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }        
    }    
}
public static void main(String[] args) {
        // TODO Auto-generated method stub

        //创建服务器端使用 DatagramSocket 类 + 端口 (指定:我从那个端口获得数据).
        DatagramSocket server = null;
        DatagramPacket packet = null;
        try {
            server = new DatagramSocket(8888);
            //准备接收数据 同样需要定义一个字节数组 封装 DataGramPacket .
            byte[] data = new byte[1024];
            packet = new DatagramPacket(data, data.length);
            //接收数据.
            server.receive(packet);//阻塞方法
            //分析数据.
            
            byte[] data01 = packet.getData(); // 获得客户端传输的真实数据 
            System.out.println(new String(data));
            //释放资源.
            server.close();
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }        
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值