UDP协议
UDP协议是一种不可靠的网络协议,它在通信的两端各建立一个Socket对象,但是这两个Socket对象只负责接收或发送,因此对于基于UDP协议的双方没有客户端和服务端的概念。
用到的方法
方法 | 类型 | 描述 |
---|---|---|
DatagramSocket() | 构造 | 构造数据报套接字并绑定到本机地址的任意端口 |
DatagramPacket(byte[] buf,int len) | 构造 | 创建一个接收长度为len的数据包 |
DatagramPacket(byte[] buf,int len,InetAddress add,int port) | 构造 | 创建数据包,发送长度为len的数据包到指定主机的指定端口 |
void send(DatagramPacket p) | 普通 | 从此套接字发送数据包 |
void close() | 普通 | 关闭此数据报套接字 |
void receive(DatagramPacket p) | 普通 | 从此套接字接收数据包 |
byte[] getData() | 普通 | 返回数据缓冲区 |
int getLenth() | 普通 | 返回要发送的数据的长度或接收的数据的长度 |
发送端
//创键发送端Socket对象
DatagramSocket ds = new DatagramSocket();
//接收键盘录入信息
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//发送数据
String line;
while ((line = br.readLine()) != null) {
byte[] bytes = line.getBytes();
DatagramPacket dp = new DatagramPacket(bytes, bytes.length,InetAddress.getByName("127.0.0.1"),12345);
if ("quit".equals(line)){
break;
}
ds.send(dp);
}
ds.close();
接收端
//创键接收端Socket对象,指定端口号
DatagramSocket ds = new DatagramSocket(12345);
//一直接收数据
while (true){
//创建数据包接收数据
byte[] bytes = new byte[1024];
DatagramPacket dp = new DatagramPacket(bytes,bytes.length);
ds.receive(dp);
System.out.println("收到: " + new String(dp.getData(),0, dp.getLength()));
}