尧图网络科技 Logo 尧图网络科技
  • 首页
  • 关于我们
  • 建站服务
  • UI 设计
  • 案例展示
  • SEO 优化
  • 资讯中心
  • 联系我们

资讯详情

深度解读 · 专业分析

  • 首页
  • 资讯中心
  • /
  • 在线咨询(本地实现—跟练)

最新资讯

  • 全部资讯
  • 行业动态
  • UI 设计
  • SEO 优化
  • 网站开发

在线咨询(本地实现—跟练)

📅 发布时间:2026/6/19 18:57:31 👁 浏览次数:
在线咨询(本地实现—跟练)

在线咨询(本地实现—跟练)

在线咨询(本地)

线程一、TalkSend()

package XiaoShuai; // 包名,属于XiaoShuai这个包import java.io.BufferedReader; // 导入缓冲读取器,用于读取输入
import java.io.IOException; // 导入IO异常处理
import java.io.InputStreamReader; // 导入输入流读取器
import java.net.DatagramPacket; // 导入UDP数据包类
import java.net.DatagramSocket; // 导入UDP套接字类
import java.net.InetSocketAddress; // 导入IP地址和端口类
import java.net.SocketException; // 导入套接字异常类public class TalkSend implements Runnable { // 定义一个可以被线程运行的发送类DatagramSocket socket = null; // 声明UDP套接字BufferedReader reader = null; // 声明输入读取器private int fromPort; // 发送消息的端口private String toIP; // 接收方IPprivate int toPort; // 接收方端口public TalkSend(int fromPort, String toIP,int toPort) { // 构造器,初始化端口和IPthis.fromPort = fromPort; // 保存发送端口this.toPort = toPort; // 保存接收端口this.toIP = toIP; // 保存接收端IPtry {socket = new DatagramSocket(fromPort); // 创建UDP套接字并绑定发送端口reader = new BufferedReader(new InputStreamReader(System.in)); // 初始化键盘输入读取器} catch (SocketException e) { // 捕获套接字异常throw new RuntimeException(e); // 抛出运行时异常}}@Overridepublic void run() { // 实现线程run方法while (true) { // 无限循环,持续发送消息try {String data = reader.readLine(); // 从键盘读取一行输入byte[] datas = data.getBytes(); // 将字符串信息转为字节数组DatagramPacket packet = new DatagramPacket(datas, 0, datas.length, new InetSocketAddress(this.toIP, this.toPort)); // 创建UDP数据包,指定目标地址和端口socket.send(packet); // 发送UDP数据包if (data.equals("bye")) { // 如果输入为"bye"break; // 退出循环,结束发送}} catch (IOException e) { // 捕获IO异常throw new RuntimeException(e); // 抛出运行时异常}}socket.close(); // 关闭UDP套接字,释放资源}
}

线程二、TalkReceive()

package XiaoShuai; // 包名,属于XiaoShuai这个包import java.io.IOException; // 导入IO异常处理
import java.net.DatagramPacket; // 导入UDP数据包类
import java.net.DatagramSocket; // 导入UDP套接字类
import java.net.SocketException; // 导入套接字异常类public class TalkReceive implements Runnable{ // 定义一个可以被线程运行的接收类DatagramSocket socket = null; // 声明UDP套接字private int port; // 接收消息的端口private String msgFrom; // 发消息的人名(显示用)public TalkReceive(int port,String msgFrom) { // 构造器,初始化端口和名称this.port = port; // 保存端口this.msgFrom = msgFrom; // 保存发送者名字try {socket = new DatagramSocket(port); // 创建UDP套接字并绑定接收端口} catch (SocketException e) { // 捕获套接字异常throw new RuntimeException(e); // 抛出运行时异常}}@Overridepublic void run() { // 实现线程run方法while(true){ // 无限循环,持续接收消息//准备接受包裹try {byte[] container = new byte[1024]; // 创建字节数组容器,用于存放接收数据DatagramPacket packet = new DatagramPacket(container,0,container.length); // 创建UDP数据包,指定容器socket.receive(packet);//阻塞式接收包裹//断开连接 byebyte[] data = packet.getData(); // 获取包裹里的数据String receiveData = new String(data,0,data.length); // 将字节数据转换为字符串System.out.println(msgFrom +":" + receiveData); // 打印发送者名字和内容if(receiveData.equals("bye")){ // 如果内容为“bye”break; // 退出循环,结束接收}} catch (IOException e) { // 捕获IO异常throw new RuntimeException(e); // 抛出运行时异常}}socket.close(); // 关闭UDP套接字,释放资源}
}

学生聊天主类

package XiaoShuai; // 包名,属于XiaoShuai这个包public class TalkStudent { // 学生聊天主类public static void main(String[] args) { // 主方法,程序入口new Thread(new TalkSend(7777,"localhost",9999)).start(); // 启动发送线程:本地7777端口发消息到9999端口new Thread(new TalkReceive(8888,"老师")).start(); // 启动接收线程:监听8888端口,显示老师发来的消息}
}

老师聊天主类

package XiaoShuai; // 包名,属于XiaoShuai这个包public class TalkTeacher { // 老师聊天主类public static void main(String[] args) { // 主方法,程序入口new Thread(new TalkSend(5555,"localhost",8888)).start(); // 启动发送线程:本地5555端口发消息到8888端口new Thread(new TalkReceive(9999,"学生")).start(); // 启动接收线程:监听9999端口,显示学生发来的消息}
}

相关新闻

02020308 .NET Core核心基础组件08-结构化日志和集中日志服务

02020308 .NET Core核心基础组件08-结构化日志和集中日志服务

2026/6/19 5:55:45 查看详情
zookeeper的配置

zookeeper的配置

2026/6/18 19:44:18 查看详情
攻防世界-parallel-comparator-200 - xxx

攻防世界-parallel-comparator-200 - xxx

2026/6/11 7:51:14 查看详情
Xiaomusic技术重构:3步实现智能语音音乐生态的分布式架构配置

Xiaomusic技术重构:3步实现智能语音音乐生态的分布式架构配置

2026/6/19 22:39:23 查看详情
深入解析MC68HC908JG16的GPIO与中断系统:从寄存器配置到实战避坑

深入解析MC68HC908JG16的GPIO与中断系统:从寄存器配置到实战避坑

2026/6/19 22:39:23 查看详情
2026东莞道滘小微企业法律顾问选型:5家省心律所盘点,首选广东卡夫律师事务所 - GrowthUME

2026东莞道滘小微企业法律顾问选型:5家省心律所盘点,首选广东卡夫律师事务所 - GrowthUME

2026/6/19 22:39:23 查看详情
无人机吊挂载荷系统的SEP-NMPC控制优化

无人机吊挂载荷系统的SEP-NMPC控制优化

2026/6/19 22:37:05 查看详情
影刀RPA实战:从零搭建电商数据采集系统

影刀RPA实战:从零搭建电商数据采集系统

2026/6/19 22:36:52 查看详情
深入解析MCF5206片选模块:嵌入式系统总线访问与多主架构设计

深入解析MCF5206片选模块:嵌入式系统总线访问与多主架构设计

2026/6/19 22:34:54 查看详情
行星盘动力学与分子谱线诊断技术解析

行星盘动力学与分子谱线诊断技术解析

2026/6/19 0:01:24 查看详情
2026年成都GEO优化机构怎么选?全维度实用指南 - 刘向阳而生

2026年成都GEO优化机构怎么选?全维度实用指南 - 刘向阳而生

2026/6/19 0:01:39 查看详情
Akagi终极指南:5分钟掌握智能麻将AI助手的完整使用教程

Akagi终极指南:5分钟掌握智能麻将AI助手的完整使用教程

2026/6/19 0:01:39 查看详情
从Landsat到高分系列:手把手教你选择适合自己项目的遥感卫星数据

从Landsat到高分系列:手把手教你选择适合自己项目的遥感卫星数据

2026/6/18 19:44:15 查看详情
福州空调维修上门加氟移机空调不制冷、推荐本地老牌鑫盛达、冷顺安 - 我叫一

福州空调维修上门加氟移机空调不制冷、推荐本地老牌鑫盛达、冷顺安 - 我叫一

2026/6/18 22:29:08 查看详情
嵌入式调试器组件化界面与拖拽交互技术详解

嵌入式调试器组件化界面与拖拽交互技术详解

2026/6/18 22:19:33 查看详情
YOLOv11涨点改进| CVPR 2026 | 独家创新首发、特征融合改进篇| 引入CMGF 引导特征融合机制,实现对不同模态特征的自适应增强与高效融合,助力多模态目标检测,小目标检测或分割有效涨点

YOLOv11涨点改进| CVPR 2026 | 独家创新首发、特征融合改进篇| 引入CMGF 引导特征融合机制,实现对不同模态特征的自适应增强与高效融合,助力多模态目标检测,小目标检测或分割有效涨点

2026/6/18 22:29:00 查看详情
E-E-A-T 成第一权重:2027 年无经验内容将被彻底淘汰

E-E-A-T 成第一权重:2027 年无经验内容将被彻底淘汰

2026/6/18 23:21:38 查看详情
深圳福田园岭老小区搬家公司推荐 经验足师傅高效搬运攻略 - 从来都是英雄出少年

深圳福田园岭老小区搬家公司推荐 经验足师傅高效搬运攻略 - 从来都是英雄出少年

2026/6/18 22:29:04 查看详情

关于尧图

立足北京本地的一站式网站建设服务与设计教学平台,深耕企业网站定制开发、全网 SEO 优化及网络推广服务。

快速链接

  • 关于我们
  • 建站服务
  • 案例展示
  • 资讯中心

服务项目

  • 企业官网定制
  • UI 界面设计
  • SEO 优化推广
  • 移动端适配

联系方式

电话:400-XXX-XXXX

邮箱:info@zskr.cn

地址:北京市朝阳区 XXX 路 XX 号

© 2026 尧图网络科技 版权所有 | 京 ICP 备 XXXXXXXX 号