UDP接收数据

2019-10-06  本文已影响0人  勇者与王者
package Day32_Net;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

/**
 * @Author quzheng
 * @Date 2019/10/6 16:13
 * @Version 1.0
 *
 * 实现UDP 接收端
 *  实现封装数据包 java.net.DatagramPacket
 *
 *  实现数据传输  java.net.DatagramSocket
 *
 *  1.创建 DatagramSocket 对象 绑定端口号 和发送端的一致
 *  2.创建字节数组,接收 发送来的数据
 *  3.创建 DatagramSocket
 *  4.调用 DatagramSocket 对象方法:
 *      receive(DatagramPacket dp) 接收数据,
 *  5.拆包 : 发送端IP地址,接收到的字节个数,发送端的端口号
 *          数据包对象 DatagramPacket 方法 getAddress() 获取发送端的IP地址对象
 *          数据包对象 DatagramPacket 方法 getLength()
 *          数据包对象 DatagramPacket 方法 getPort()
 *  6.关闭资源
 */
public class UDPReceive {
    public static void main(String[] args) throws IOException {
        //
        DatagramSocket ds = new DatagramSocket(6000);

        byte [] data = new byte[1024];

        DatagramPacket dp = new DatagramPacket(data,data.length);

        ds.receive(dp);

        String ip = dp.getAddress().getHostAddress();

        int port = dp.getPort();

        int length = dp.getLength();

        // 不能直接打印byte 打印的是对象地址
        System.out.println(new String(data,0,length)+"..."+ip+":"+port);

        ds.close();
    }
}


上一篇 下一篇

猜你喜欢

热点阅读