UDP协议是无序的、不可靠的、无连接的,但是传输速度比较快,UDP协议以数据报作为数据传输的载体。
服务端:
public class UDPServer {
public static void main(String [] args) throws IOException {
/**
* 服务端接收客户端消息
*/
//1、创建服务端DatagramSocket,指定端口
DatagramSocket socket = new DatagramSocket(8800);
//2、创建数据报,用于接受客户端发送的数据
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data,data.length);
//3、接收客户端发送的数据
System.out.println("-----服务端已经启动,等待客户端发送数据----");
socket.receive(packet);//等待客户端发送消息
//4、读取数据
String info = new String(data,0,packet.getLength());
System.out.println("从客户端获取到的信息为:" + info);
/**
* 服务端响应客户端
*/
//1、定义客户端的地址、端口、数据
InetAddress address = packet.getAddress();
int port = packet.getPort();
byte[] data1 = "欢迎你!".getBytes();
//2、创建数据报,包含相应的信息
DatagramPacket packet1 = new DatagramPacket(data1,data1.length,address,port);
//3、响应客户端
socket.send(packet1);
//4、关闭资源
socket.close();
}
}
客户端:
public class UDPClient {
public static void main(String [] args) throws IOException {
/**
* 客户端向服务端发送消息
*/
//1、定义服务器的地址、端口号、数据
InetAddress address = InetAddress.getByName("localhost");//因为服务器是本机,所以才能用“localhost”
int port = 8800;
byte[] data = "用户名:ljsu;密码:245245".getBytes();
//2、创建数据报,包含需要发送的数据
DatagramPacket packet = new DatagramPacket(data,data.length,address,port);
//3、创建DatagramSocket对象
DatagramSocket socket = new DatagramSocket();
//4、想服务器发送数据
socket.send(packet);
/**
* 客户端接受服务端响应信息
*/
//1、创建数据报,用于接受服务器响应信息
byte[] data1 = new byte[1024];
DatagramPacket packet1 = new DatagramPacket(data1,data.length);
//2、接收服务端端响应的数据
System.out.println("-----等待服务端响应消息----");
socket.receive(packet1);
//3、读取数据
String info = new String(data1,0,packet1.getLength());
System.out.println("服务端响应的信息为:" + info);
//4、关闭资源
socket.close();
}
}