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();
}
}
网友评论