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

Java模拟实现socket通信

在这里插入图片描述
客户端代码:

package org.example.socket;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;/*** 客户端*/
public class Client {public static void main(String[] args) {String host = "localhost";int port = 12345;System.out.println("客户端准备就绪,开始连接服务器");try(Socket socket = new Socket(host, port)) {System.out.println("客户端成功连接服务器: host-" + socket.getInetAddress() + ", port-" + socket.getPort());BufferedReader inputBuffer = new BufferedReader(new InputStreamReader(System.in));BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter out = new PrintWriter(socket.getOutputStream(), true);String msg;while(true) {System.out.println("请输入消息:");msg = inputBuffer.readLine();if(!msg.equalsIgnoreCase("bye")) {System.out.println("客户端开始传输数据:......");out.println(msg);String msgFromServer = in.readLine();System.out.println("客户端收到服务器消息 : " + msgFromServer);}else {System.out.println("客户端退出");break;}}}catch (Exception e) {e.printStackTrace();}}
}

服务端代码:

package org.example.socket;import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;/*** 服务器端*/
public class Server {public static void main(String[] args) throws IOException {int port = 12345;// 端口号try(ServerSocket serverSocket = new ServerSocket(port)) {System.out.println("服务器启动,等待客户端连接:........");Socket clientSocket = serverSocket.accept();//等待客户端连接 如果客户端迟迟不发送数据,就会一直阻塞等待// 成功接收到连接System.out.println("成功接收到客户端连接,地址为 : " + clientSocket.getInetAddress());// 获取输入流,设置输出流BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);String msg;while((msg = in.readLine()) != null) {System.out.println("服务端接收到数据:" + msg);// 传递数据给客户端out.println("服务器已经接收到你传输的数据, 数据内容为: " + msg);// 检测到 bye 就断开链接if(msg.equalsIgnoreCase("bye")) {System.out.println("客户端断开连接");break;}}clientSocket.close();}catch (Exception e) {e.printStackTrace();}}
}
http://www.dtcms.com/a/414167.html

相关文章:

  • iSCSI服务器
  • PyQt5 界面美化:从基础到高级的完整指南
  • 【Linux系列】让 Vim “跑”起来:实现一个会动的进度条
  • 上海商务网站建设wordpress 云相册
  • LLM - 构建AI智能体的完整指南:7步流程图与框架实战
  • springboot523基于Spring Boot的大学校园生活信息平台的设计与实现
  • Kubernetes 安全管理:认证、授权与准入控制全面解析
  • 江苏省住房城乡建设厅门户网站淄博企业网站
  • SpringBoot整合JakartaMail,实现发送邮箱功能
  • 开发 Flutter Windows 应用,如何安装工具链工具链和SDK
  • 杂记 10
  • 错误解决:Flutter找不到合适的Visual Studio 工具链
  • 基于KingbaseES集群管理实战:从部署运维到高可用架构深度解析
  • NXP - 用MCUXpresso IDE v25.6.136的工具链编译Smoothieware固件工程
  • 【影刀RPA】手机应用自动化
  • 有什么字体设计网站网站建设中的安全问题
  • 【开题答辩全过程】以 SpringBoot房屋出租管理系统为例,包含答辩的问题和答案
  • QT6中Column View与QUndoView功能与用法
  • Layui 使用
  • 如何优化 C# MVC 应用程序的性能
  • Uni-App 页面跳转监控实战:快速定位路由问题
  • Redisson的Lock和TryLock的区别
  • VLA技术论文阅读
  • find数组方法详解||Vue3 + uni-app + Wot Design(wd-picker)使用自定义插槽内容写一个下拉选择器
  • 怎么找做网站平台公司技术支持 湖北网站建设
  • 大型活动临时组网的技术解析:如何实现高效稳定的通信网络
  • 个人博客网站实验报告wordpress 页面新建
  • ZYNQ CAN接口全面解析:从裸机驱动到PetaLinux实战
  • AI 重构实体经济:2025 传统产业转型的实践与启示
  • 安宝特产品丨FME Realize:重构数据与现实的边界,让空间计算赋能现场决策