关于UDP
UDP协议(用户数据报协议)是无连接的、不可靠的、无序的,速度快,进行数据传输时,首先将要传输的数据定义成数据报(Datagram),大小限制在64k,在数据报中指明数据索要达到的Socket(主机地址和端口号),然后再将数据报发送出去.
Java 对UDP 协议通信提供了两个主要的类,DatagramPacket类:表示数据报包,DatagramSocket类:进行端到端通信的类。
服务器
public class Server {
public static void main(String[] args) throws IOException {
// 1,创建服务器端,指定端口
DatagramSocket server = new DatagramSocket(10008);
// 2,创建数据报,用于接收客户端发送的数据
byte[] data1 = new byte[1024];
DatagramPacket packet = new DatagramPacket(data1, data1.length);
// 3,读取数据
server.receive(packet);
System.out.println("我是服务器,客户端说:" + new String(data1, 0, data1.length));
// 1,定义客户端的地址,端口号,数据
InetAddress address = packet.getAddress();
int port = packet.getPort();
byte[] data2 = "欢迎您!".getBytes();
// 2,创建数据包,包含响应的数据信息
DatagramPacket packet2 = new DatagramPacket(data2, data2.length, address, port);
// 3,响应客户端
server.send(packet2);
// 4,关闭资源
server.close();
}
}
客户端
public class Client {
public static void main(String[] args) throws IOException {
// 1,定义服务器端的地址,端口号,数据
InetAddress address = InetAddress.getByName("localhost");
int port = 10008;
byte[] data = "你好吗?".getBytes();
// 2,创建数据报,包含发送的数据信息。
DatagramPacket packet = new DatagramPacket(data, data.length, address, port);
// 3,创建DatagramSocket对象
DatagramSocket socket = new DatagramSocket();
// 4,向服务器发送数据
socket.send(packet);
// 1,创建数据报,用于接收服务端的响应数据
byte[] data2 = new byte[1024];
DatagramPacket packet2 = new DatagramPacket(data2, data2.length);
// 2,接收服务器的响应数据
socket.receive(packet2);
System.out.println("我是客戶端,服务器说:" + new String(data2));
// 关闭资源。
socket.close();
}
}