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

Java基础-TCP通信(多发多收和一发一收)

目录

案例要求:

实现思路:

代码:

User:客户端

Client:服务端

总结:


案例要求:

实现TCP通信的多发多收和一发一收,多发多收去掉各自的while循环就是一发一收,本文只模拟一发一收

实现思路:

客户端(User)通过Socket连接服务端(Client)的8888端口,用户输入消息后通过DataOutputStream发送,输入"exit"退出。服务端通过ServerSocket监听端口,接收消息后显示内容和客户端IP及端口信息。该实现移除了多发多收中的循环结构,简化为一对一通信模式,可作为TCP通信的基础框架。

代码:

User:客户端

import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.*;
import java.util.Scanner;public class User {public static void main(String[] args) throws Exception {Socket socket = new Socket("127.0.0.1", 8888);OutputStream out = socket.getOutputStream();DataOutputStream dos = new DataOutputStream(out);Scanner sc = new Scanner(System.in);while (true) {String msg= sc.nextLine();if(msg.equals("exit")){dos.close();socket.close();break;}dos.writeUTF(msg);}}
}

Client:服务端

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.ServerSocket;
import java.net.Socket;public class Client {public static void main(String[] args) throws  Exception{ServerSocket serverSocket = new ServerSocket(8888);Socket socket = serverSocket.accept();InputStream in = socket.getInputStream() ;DataInputStream dis = new DataInputStream(in);while (true) {String msg=dis.readUTF();System.out.println("收到用户端的消息:"+msg);String ip=socket.getInetAddress().getHostAddress();String port=socket.getPort()+"";System.out.println("ip:"+ip+" port:"+port);}}
}


总结:

本文实现了一发一收的TCP通信模型。客户端(User)通过Socket连接服务端(Client)的8888端口,用户输入消息后通过DataOutputStream发送,输入"exit"退出。服务端通过ServerSocket监听端口,接收消息后显示内容和客户端IP及端口信息。该实现移除了多发多收中的循环结构,简化为一对一通信模式,可作为TCP通信的基础框架。

http://www.dtcms.com/a/322545.html

相关文章:

  • 八、Linux Shell 脚本:变量与字符串
  • Dotenv 入门教程
  • 政府数字化大屏系统 - Flask实现方案
  • 上海AI Lab、浙大EagleLab等提出RRVF:利用「验证非对称性」,只输入图片学习视觉推理
  • 接口文档深入解析
  • OpenAI开源大模型 GPT-OSS 开放权重语言模型解析:技术特性、部署应用及产业影响
  • Python基础教程(七)匹配模式:隐藏在结构之美中的编程革命
  • JVM常用参数有哪些?
  • Orange的运维学习日记--36.NFS详解与服务部署
  • 人脸情绪检测数据集-9,400 张图片 智能客服系统 在线教育平台 心理健康监测 人机交互优化 市场研究与广告 安全监控系统
  • WinForm 复合控件(用户控件):创建与使用指南
  • 【2025】Datawhale AI夏令营-多模态RAG-Task1、Task2笔记-任务理解与Baseline代码解读
  • 线程池多反应堆服务器webserver(c++)
  • 免费PDF编辑软件 pdf24-creator 及其安装包
  • 【无标题】AI 赋能日常效率:实用案例与操作心得分享
  • AI工具在数据质量管理中的应用
  • 电子电气架构 --- 电气/电子架构迁移已拉开帷幕
  • CamX-骁龙相机修改
  • Docker Desktop 使用操作指南
  • 费米问题:估算北京有多少量特斯拉汽车?
  • 虚拟机Ubuntu重启发现找不到共享文件夹
  • 202506 电子学会青少年等级考试机器人一级理论综合真题
  • 「iOS」————响应者链与事件传递链
  • 【工具变量】全国省级农业保险保费收入与赔付支出数据更新(2001-2023年)
  • wsl ubuntu访问(挂载)vmware vmdk磁盘教程
  • React Native jpush-react-native极光推送 iOS生产环境接收不到推送
  • [Oracle] ADD_MONTHS()函数
  • 可直接运行的 Playwright C# 自动化模板
  • day22|学习前端ts语言
  • 我想做自动化报社保,用哪种技术更好一点呢?