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

网络编程3

TCP通信-多发多收

客户端Client

package TCP2; import java.io.DataOutputStream; import java.io.OutputStream; import java.net.Socket; import java.util.Scanner; public class Client{ public static void main(String[] args) throws Exception{ //1.创建Socket对象,并同时请求与服务端的连接 Socket socket = new Socket("127.0.0.1",8888); //2.从socket通信管道中得到一个字节输出流,用来发数据给服务端程序 OutputStream os = socket.getOutputStream(); //3.把低级的字节输出流包装成数据输出流 DataOutputStream dos = new DataOutputStream(os); Scanner sc = new Scanner(System.in); while (true) { System.out.println(); String msg = sc.nextLine(); //一旦用户输入了exit,就退出客户端程序 if("exit".equals(msg)){ System.out.println("已成功退出"); dos.close(); socket.close(); break; } //4.开始写数据出去了 dos.writeUTF(msg); dos.flush(); } } }

客户端使用死循环,不停的发送数据,知道输入exit退出程序

服务端Serve

package TCP2; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; public class Server{ public static void main(String[] args) throws Exception{ System.out.println("...服务端启动成功..."); //1.创建ServerSocket的对象,同时为服务端注册端口 ServerSocket serverSocket = new ServerSocket(8888); //2.使用serverSocket对象,调用一个accept方法,等待客户端连接请求 Socket socket = serverSocket.accept(); //3.从socket通信管理中得到一个字节输入流 InputStream is = socket.getInputStream(); //4.把原始的字节输入流包装成数据输入流 DataInputStream dis = new DataInputStream(is); while (true) { try { //5.使用数据输入流读取客户端发送过来的消息 String rs = dis.readUTF(); System.out.println(rs); } catch (IOException e) { dis.close(); socket.close(); System.out.println(socket.getRemoteSocketAddress()+"已经退出"); break; } // dis.close(); // socket.close(); } } }

服务端使用死循环不停的接收这个客户端发来的信息,同时补充异常捕捉功能,监测到客户端退出后,退出循环释放资源

http://www.jsqmd.com/news/1272669/

相关文章:

  • 探索Pixelorama:解锁像素艺术创作的无限维度
  • 免费在线pdf转图片工具实测,这8个值得试试 - 办公小帮手
  • TMS320DM6467T中断控制器与EMIF实战:从原理到调试避坑指南
  • Manacher算法:线性时间求解最长回文子串
  • RAG技术演进:从检索增强生成到Agentic RAG的范式革命
  • 2026年西安alloy825厂家口碑推荐,价格透明不踩坑的本地优选 - 工业品牌热点
  • 【关注可白嫖源码】---课程设计---毕业设计-- django校园图书借阅管理系统[编号:project63501](案件分析)
  • Delphi服务端与Cocos2d-x客户端:经典游戏架构深度解析与实战
  • ANFIS非线性系统建模:原理与Matlab实践
  • 【AI配色无障碍设计黄金法则】:20年UI/UX专家亲授——覆盖98.7%色觉障碍用户的5大智能配色模型
  • LLM道德推理:结构化抵抗机制与谄媚倾向的工程解决方案
  • 基于Grafana与Prometheus构建自动化测试监控大盘实战指南
  • C++实现点云直通滤波:原理、优化与PointCloudLib实战
  • 大模型在软件系统设计中的实用能力与评估方法
  • 人的系统一直在接收输入。
  • 基于YOLOv11的布料缺陷检测系统开发与实践
  • 商品条码查询接口常见错误与排错指南
  • 智能体开发与AI落地:核心架构与Dify平台实战
  • 图片文字提取工具推荐:上传校对与复制归档操作步骤 - 软件小管家
  • 深入解析TI C66x DSP内核架构与关键外设配置实战
  • 【音频基础学习】第 13 天,把概念映射到工程代码
  • 郑州2026年geo优化客户认可吗?十大实力测评,本地优选避坑指南 - 工业品牌热点
  • RAG技术解析:大模型与知识检索的融合实践
  • 现在的状态不是你想长期停留的地方。
  • C++线程池源码深度解析:从核心原理到性能优化实战
  • 2026口碑不错的育儿嫂企业推荐,价格透明避坑指南,实力测评不踩雷 - 工业品牌热点
  • 直通滤波算法原理与工程实践指南
  • Unity游戏翻译终极指南:XUnity.AutoTranslator完全配置教程
  • 强化学习与RLHF技术:从基础到优化算法解析
  • 2026 年更新:白塔评价高的无机纤维喷涂企业深度剖析,揭秘:这技术如何颠覆传统表面处理? - 行业推荐【认证官】