UDP
- 通信原理:UDP协议是一种不可靠的网络协议,它在通信的两端各建立一个socket对象,但是这两个socket只是发送、接收数据的对象,因次对于基于UDP协议的通信双方而言,没有所谓的客户端和服务器的概念
- java提供了DatagramSocket类作为基于UDP协议的Socket
UDP发送数据
- 发送步骤
①创建发送端的Socket对象(DatagramSocket())
②创建数据,并把数据打包(DatagramPacket(byte[] buf,int length,InetAddress address,int port))
③调用DatagramSocket对象的方法发送数据(send()方法)
④关闭发送端(close()方法)
public class UdpSend {
public static void main(String[] args) throws IOException {
//创建发送端的socket对象(DatagramSocket)
//DatagramSocket()构造数据套接字并将其绑定到本地主机上的任意可用端口
DatagramSocket datagramSocket = new DatagramSocket();
//创建数据,并把数据打包
byte[] bytes = "hello,udp,我来了".getBytes();
int len = bytes.length;
InetAddress address = InetAddress.getByName("DESKTOP-0NL0JDK");
int port = 10086;
DatagramPacket datagramPacket = new DatagramPacket(bytes,len,address,port);
//调用Datagramsocket对象的方法发送对象
datagramSocket.send(datagramPacket);
//关闭发送站
datagramSocket.close();
}
}
UDP接收数据
- 接收步骤
①创建接收端的Socket对象(DatagramSocket(int port))
②创建一个数据包,用于接收数据
(DatagramPacket(byte[] buf,int length))
③调用DatagramSocket对象的方法接收数据
(void recevie(DatagramPacket dp))
④解析数据包,并把数据在控制台显示
(byte[] getData();int getLength())
⑤关闭接收端
(void close())
public class UdpReceiver {
public static void main(String[] args) throws IOException {
//创建接收端的Socket对象(DatagramSocket)
//Datagramsocket(int port)构造数据报套接字并将其绑定到本地主机上的指定端口
DatagramSocket datagramSocket = new DatagramSocket(10086);
//创建一个数据包,用于接收数据
byte[] bytes= new byte[1024];
DatagramPacket datagramPacket = new DatagramPacket(bytes,1024);
//调用DatagramSocket对象的方法接收数据
datagramSocket.receive(datagramPacket);
//获得实际接收的数据长度
int length = datagramPacket.getLength();
datagramSocket.close();
//解析数据包,并把数据在控制台上显示
byte[] data = datagramPacket.getData();
String str = new String(data,0,length);
System.out.println(str);
//关闭数据
datagramSocket.close();
}
}
网友评论