zoukankan      html  css  js  c++  java
  • java-UDP协议实现数据的发送和接收

    实现发送端

    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    
    /*
     *  实现UDP协议的发送端:
     *    实现封装数据的类 java.net.DatagramPacket  将你的数据包装
     *    实现数据传输的类 java.net.DatagramSocket  将数据包发出去
     *    
     *  实现步骤:
     *    1. 创建DatagramPacket对象,封装数据, 接收的地址和端口
     *    2. 创建DatagramSocket
     *    3. 调用DatagramSocket类方法send,发送数据包
     *    4. 关闭资源
     *    
     *    DatagramPacket构造方法:
     *      DatagramPacket(byte[] buf, int length, InetAddress address, int port) 
     *      
     *    DatagramSocket构造方法:
     *      DatagramSocket()空参数
     *      方法: send(DatagramPacket d)
     *      
     */
    public class UDPSend {
    	public static void main(String[] args) throws IOException{
    		// 创建数据包对象,封装要发送的数据,接收端IP,端口
    		byte[] date = "你好UDP".getBytes();
    		//创建InetAdress对象,封装自己的IP地址
    		InetAddress inet = InetAddress.getByName("127.0.0.1");
    		DatagramPacket dp = new DatagramPacket(date, date.length, inet,6000);
    		//创建DatagramSocket对象,数据包的发送和接收对象
    		DatagramSocket ds = new DatagramSocket();
    		//调用ds对象的方法send,发送数据包
    		ds.send(dp);
    		ds.close();
    	}
    
    }
    

    实现接收端

    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    
    /*
     *  实现UDP接收端
     *    实现封装数据包 java.net.DatagramPacket 将数据接收
     *    实现输出传输     java.net.DatagramSocket 接收数据包
     *    
     *  实现步骤:
     *     1. 创建DatagramSocket对象,绑定端口号
     *         要和发送端端口号一致
     *     2. 创建字节数组,接收发来的数据
     *     3. 创建数据包对象DatagramPacket
     *     4. 调用DatagramSocket对象方法
     *        receive(DatagramPacket dp)接收数据,数据放在数据包中
     *     5. 拆包
     *          发送的IP地址
     *            数据包对象DatagramPacket方法getAddress()获取的是发送端的IP地址对象
     *            返回值是InetAddress对象
     *          接收到的字节个数
     *            数据包对象DatagramPacket方法 getLength()
     *          发送方的端口号
     *            数据包对象DatagramPacket方法 getPort()发送端口
     *     6. 关闭资源
     */
    public class UPDReceive {
    	public static void main(String[] args) throws IOException{
    		// 创建数据包传输对象DatagramSocket绑定端口号
    		DatagramSocket ds = new DatagramSocket(6000);
    		//创建字节数据
    		byte[] data = new byte[1024];
    		// 创建数据包对象,传递字节数组
    		DatagramPacket dp = new DatagramPacket(data, data.length);
    		//调用ds对象的方法receive传递数据包
    		ds.receive(dp);
    		
    		//获取发送端的IP地址对象
    		String ip = dp.getAddress().getHostAddress();
    		int port = dp.getPort();
    		
    		//获取接收到的字节个数
    		int length = dp.getLength();
    		System.out.println(new String(data, 0, length) + "........." + ip + ":" + port);
    		ds.close();
    	}
    
    }
    
  • 相关阅读:
    November 07th, 2017 Week 45th Tuesday
    November 06th, 2017 Week 45th Monday
    November 05th, 2017 Week 45th Sunday
    November 04th, 2017 Week 44th Saturday
    November 03rd, 2017 Week 44th Friday
    Asp.net core 学习笔记 ( Area and Feature folder structure 文件结构 )
    图片方向 image orientation Exif
    Asp.net core 学习笔记 ( Router 路由 )
    Asp.net core 学习笔记 ( Configuration 配置 )
    qrcode render 二维码扫描读取
  • 原文地址:https://www.cnblogs.com/zhaoyongle/p/9242521.html
Copyright © 2011-2022 走看看