From 952f7a1734cc5288236beab9ff40bf5bfb31b851 Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Fri, 14 Aug 2026 09:51:39 +0800 Subject: [PATCH] =?UTF-8?q?s-day11-UDP=E5=A4=9A=E5=8F=91=E5=A4=9A=E6=94=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/inmind/udp02/UdpClientDemo04.java | 46 +++++++++++++++++++ .../src/com/inmind/udp02/UdpServerDemo05.java | 27 +++++++++++ 2 files changed, 73 insertions(+) create mode 100644 s-day11/src/com/inmind/udp02/UdpClientDemo04.java create mode 100644 s-day11/src/com/inmind/udp02/UdpServerDemo05.java diff --git a/s-day11/src/com/inmind/udp02/UdpClientDemo04.java b/s-day11/src/com/inmind/udp02/UdpClientDemo04.java new file mode 100644 index 0000000..a0a0f85 --- /dev/null +++ b/s-day11/src/com/inmind/udp02/UdpClientDemo04.java @@ -0,0 +1,46 @@ +package com.inmind.udp02; + +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; +import java.util.Scanner; + +/* +UDP多发多收 + */ +public class UdpClientDemo04 { + public static void main(String[] args) throws Exception { + //1.创建客户端对象 + DatagramSocket ds = new DatagramSocket(); + //2.创建数据包发送数据 + Scanner sc = new Scanner(System.in); + + //3.不停地发,用户输入什么就发送什么 + while (true) { + System.out.println("请输入:"); + String line = sc.nextLine();//阻塞 + + if ("exit".equals(line)) {//这样写避免了空指针异常的可能性 + break; + } + + byte[] bytes = line.getBytes(); + /* + public DatagramPacket(byte buf[], int offset, int length, + InetAddress address, int port) + 参数一:封装要发出去的数据 + 参数二:发送出去的数据大小(字节个数) + 参数三:服务端的IP地址(找到服务器主机) + 参数四:服务端程序的端口号 + */ + DatagramPacket dp = new DatagramPacket( + bytes, bytes.length, + InetAddress.getByName("192.168.23.107"), 10023); + //4.开始正式发送数据包 + ds.send(dp); + } + + + System.out.println("程序结束"); + } +} diff --git a/s-day11/src/com/inmind/udp02/UdpServerDemo05.java b/s-day11/src/com/inmind/udp02/UdpServerDemo05.java new file mode 100644 index 0000000..326002d --- /dev/null +++ b/s-day11/src/com/inmind/udp02/UdpServerDemo05.java @@ -0,0 +1,27 @@ +package com.inmind.udp02; + +import java.net.DatagramPacket; +import java.net.DatagramSocket; + +//启动服务器,不停地获取客户端的信息 +public class UdpServerDemo05 { + public static void main(String[] args) throws Exception { + System.out.println("服务器启动"); + //1.创建服务器对象 + DatagramSocket ds = new DatagramSocket(10023); + //2.不停地获取数据包 + byte[] buffer = new byte[1024 * 64]; + while (true) { + //3.创建出一个数据包,用于接收客户端的数据 + DatagramPacket dp = new DatagramPacket(buffer, buffer.length); + //4.服务器正式接收数据包 + ds.receive(dp); + //5.将字节数据转为字符,并显示对应客户端的信息 + int length = dp.getLength();//获取数据包中字节数据的长度 + String result = new String(buffer, 0, length); + System.out.println(dp.getPort());//获取数据包的端口 + System.out.println(dp.getAddress().getHostAddress());//获取数据包的IP地址 + System.out.println(result); + } + } +}