## 服务器端实现步骤
1. 创建DatagramSocket,指定端口号
2. 创建DatagramPacket,用于接收客户端的数据
3. 接收客户端发送的数据信息
4. 读取数据
~~~java
public class UDPServer {
/**
* 服务器端,实现基于UDP的用户登陆
*
* @throws IOException
*/
public static void main(String[] args) throws IOException {
/* 服务端接收客户端的数据 */
// 1. 创建DatagramSocket,指定端口号
DatagramSocket socket = new DatagramSocket(8800);
// 2. 创建DatagramPacket,用于接收客户端的数据
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[] data2 = "欢迎你".getBytes();
// 2.创建数据包,包含响应的数据信息
DatagramPacket packet2 = new DatagramPacket(data2, data2.length,
address, port);
// 3.响应客户端
socket.send(packet2);
// 4.关闭资源
socket.close();
}
}
~~~
## 客户端实现步骤
1. 定义发送信息,服务器地址,端口号,数据
2. 创建DatagramPacket,包含将要发送的信息
3. 创建DatagramSocket对象
4. 发送数据
~~~java
public class UDPClient {
/**
* 客户端
*
* @throws IOException
*/
public static void main(String[] args) throws IOException {
/* 向服务器端发送信息 */
// 1. 定义发送信息,服务器地址,端口号,数据
InetAddress address = InetAddress.getByName("localhost");
int port = 8800;
byte[] data = "用户名:admin;密码:123".getBytes();
// 2. 创建DatagramPacket,包含将要发送的信息
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);
// 3.当前数据
String reply = new String(data2, 0, packet2.getLength());
System.out.println("我是客户端,服务器说:" + reply);
// 4.关闭资源
socket.close();
}
}
~~~