当前位置: 首页 > news >正文

UDP和TCP示例程序

查看自己的IP地址

以管理员身份运行cmd

输入

ipconfig

复制图中的IPv4地址

UDP通信程序

UdpReceiver.java

import java.net.*;public class UdpReceiver {public static void main(String[] args) {// 监听端口(需与发送端保持一致)int listenPort = 8888;// 接收数据的缓冲区大小(这里设置为1024字节)byte[] receiveBuffer = new byte[1024];try (DatagramSocket socket = new DatagramSocket(listenPort)) {System.out.println("接收端已启动,正在监听端口 " + listenPort + " ...");// 创建用于接收数据的空数据报包DatagramPacket packet = new DatagramPacket(receiveBuffer, receiveBuffer.length);// 阻塞等待接收数据(程序会在此处暂停,直到收到数据)socket.receive(packet);// 解析接收到的数据String receivedMessage = new String(packet.getData(), 0, packet.getLength()  // 只取有效数据部分(避免缓冲区残留数据干扰));// 打印发送方信息和接收内容System.out.println("收到来自 " + packet.getAddress().getHostAddress() + ":" + packet.getPort() + " 的消息:" + receivedMessage);} catch (SocketException e) {System.err.println("Socket创建失败(可能端口被占用):" + e.getMessage());} catch (Exception e) {System.err.println("接收过程中发生异常:" + e.getMessage());}}
}

UdpSender.java

import java.net.*;public class UdpSender {public static void main(String[] args) {// 目标IP地址String targetIp = "172.18.92.212";// 目标端口(需与接收端保持一致)int targetPort = 8888;// 要发送的数据String message = "这是来自UDP发送端的测试消息!";try (DatagramSocket socket = new DatagramSocket()) {// 将字符串转换为字节数组byte[] sendData = message.getBytes();// 创建数据报包:指定目标地址、端口和要发送的数据DatagramPacket packet = new DatagramPacket(sendData, sendData.length, InetAddress.getByName(targetIp), targetPort);// 发送数据报socket.send(packet);System.out.println("发送成功!发送内容:" + message);} catch (SocketException e) {System.err.println("Socket创建失败:" + e.getMessage());} catch (UnknownHostException e) {System.err.println("目标IP地址解析失败:" + e.getMessage());} catch (Exception e) {System.err.println("发送过程中发生异常:" + e.getMessage());}}
}

运行

先启动接收端,再启动发送端

TCP通信程序

TcpClient.java

import java.io.*;
import java.net.*;public class TcpClient {public static void main(String[] args) {// 目标服务器IPString serverIp = "172.18.92.212";// 目标服务器端口(需与服务器端保持一致)int serverPort = 9999;// 要发送的数据String message = "这是来自TCP客户端的测试消息!";try (Socket socket = new Socket(serverIp, serverPort);OutputStream os = socket.getOutputStream();PrintWriter pw = new PrintWriter(os, true)) {  // 自动刷新缓冲区// 发送数据pw.println(message);System.out.println("客户端已连接服务器,消息发送成功:" + message);} catch (UnknownHostException e) {System.err.println("目标服务器IP解析失败:" + e.getMessage());} catch (ConnectException e) {System.err.println("连接失败(可能服务器未启动/端口错误):" + e.getMessage());} catch (IOException e) {System.err.println("通信过程中发生异常:" + e.getMessage());}}
}

TcpServer.java

import java.io.*;
import java.net.*;public class TcpServer {public static void main(String[] args) {// 监听端口(需与客户端保持一致)int listenPort = 9999;try (ServerSocket serverSocket = new ServerSocket(listenPort)) {System.out.println("服务器已启动,正在监听端口 " + listenPort + " ...");// 阻塞等待客户端连接(程序会在此处暂停,直到有客户端连接)try (Socket clientSocket = serverSocket.accept()) {  // 接收到连接后自动关闭clientSocketInetSocketAddress clientAddress = (InetSocketAddress) clientSocket.getRemoteSocketAddress();System.out.println("客户端连接成功!客户端地址:" + clientAddress.getAddress().getHostAddress() + ":" + clientAddress.getPort());// 获取输入流读取客户端数据InputStream is = clientSocket.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is));// 读取一行数据(与客户端的println对应)String receivedMessage = br.readLine();System.out.println("收到客户端消息:" + receivedMessage);} catch (IOException e) {System.err.println("客户端连接处理异常:" + e.getMessage());}} catch (IOException e) {System.err.println("服务器启动失败(可能端口被占用):" + e.getMessage());}}
}

运行

先启动服务器端,再启动客户端

相关文章:

  • 机器学习算法-sklearn源起
  • 【JVM 05-JVM内存结构之-堆】
  • RabbitMQ 应用
  • Python知识图谱工具全解析
  • SDL2常用函数:SDL_LoadBMP 数据结构详解与示例
  • ABP VNext + Orleans:Actor 模型下的分布式状态管理最佳实践
  • 基于Java+MySQL 实现(Web)网络考试系统
  • C++篇——C++11的更新内容
  • github开源版pymol安装(ubuntu22.04实战版)
  • 最宽温度范围文本格式PT1000分度表-200~850度及PT1000铂电阻温度传感器计算公式
  • BLIP论文笔记
  • 软件名称:系统日志监听工具 v1.0
  • 二、ZooKeeper 集群部署搭建
  • HTMLUnknownElement的使用
  • CSS专题之flex: 1常见问题
  • 性能测试工具JMeter
  • 微服务架构实战:Eureka服务注册发现与Ribbon负载均衡详解
  • 用service 和 SCAN实现sqlplus/jdbc连接Oracle 11g RAC时负载均衡
  • MySQL:游标 cursor 句柄
  • 自动涂胶机设计及其在工业生产中的应用研究
  • 建设电商网站/如何在百度发广告推广
  • 购物网站前台功能模块/百度搜索广告
  • 本溪市建设委员会网站/武汉seo 网络推广
  • 建站之星如何建网站/自己怎么优化网站排名
  • 网站制作./关键词优化策略
  • 设计网站推荐素材网站/青岛模板建站