s-day11-UDP的服户端实现&测试

This commit is contained in:
2026-08-12 16:55:06 +08:00
parent d0c28dcb01
commit b7a5b28471
2 changed files with 45 additions and 2 deletions
+4 -2
View File
@@ -25,7 +25,7 @@ DatagramPacket(byte[] buf, int length) 创建接收数据的数据包对象
int getLength() 返回要发送的数据的长度或接收到的数据的长度 int getLength() 返回要发送的数据的长度或接收到的数据的长度
需求:使用UDP实现快速通信,实现1发1收 需求:使用UDP实现快速通信,实现1发1收
客户端的实现
*/ */
public class Demo02 { public class Demo02 {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
@@ -34,7 +34,9 @@ public class Demo02 {
//2.创建数据包对象,封装要发出去的数据(创建一个飞饼) //2.创建数据包对象,封装要发出去的数据(创建一个飞饼)
byte[] bytes = "我爱java,java爱我".getBytes(); byte[] bytes = "我爱java,java爱我".getBytes();
DatagramPacket packet = new DatagramPacket(bytes,bytes.length, InetAddress.getLocalHost(),10022); // DatagramPacket packet = new DatagramPacket(bytes,bytes.length, InetAddress.getLocalHost(),10022);
DatagramPacket packet = new DatagramPacket(bytes,bytes.length,
InetAddress.getByName("192.168.23.174"),10022);
//3.客户端正式发送这个数据包出去 //3.客户端正式发送这个数据包出去
socket.send(packet); socket.send(packet);
System.out.println("客户端数据发送完毕~~"); System.out.println("客户端数据发送完毕~~");
+41
View File
@@ -0,0 +1,41 @@
package com.inmind.udp02;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/*
作为UDP服务端,接收客户端发送的数据
在java中使用DatagramSocket来表示UDP的客户端和服务端
构造方法
DatagramSocket(int port) 创建服务端的Socket对象,并指定端口号。
常用方法:
void receive(DatagramPacket p) 使用数据包接收数据
DatagramPacket :数据包
DatagramPacket(byte[] buf, int length) 创建接收数据的数据包对象
int getLength() 返回要发送的数据的长度或接收到的数据的长度
需求:创建服务器,接收客户端的数据
*/
public class Demo03 {
public static void main(String[] args) throws Exception {
System.out.println("服务端启动了.....");
//1.创建服务端的对象(并指定端口号)
DatagramSocket socket = new DatagramSocket(10022);
//2.创建出一个数据包对象,用于接收数据(飞饼)
byte[] bytes = new byte[64 * 1024];//64KB
DatagramPacket packet = new DatagramPacket(bytes, bytes.length);
//3.服务器开始正式使用数据包,接收客户端的数据
socket.receive(packet);//阻塞方法,等待客户端发送的数据
//4.获取数据包的ip地址,和端口号
int length = packet.getLength();//获取数据包中字节数据的长度
String result = new String(bytes, 0, length);
System.out.println(packet.getPort());//获取数据包的端口
System.out.println(packet.getAddress().getHostAddress());//获取数据包的IP地址
System.out.println(result);
socket.close();//服务器资源释放
}
}