Java中的TCP通信

news2024/11/26 10:40:26

TCP通信

  • TCP通信
    • Socket客户端
    • ServerSocket服务端
  • 例子:一发一收
  • 例子:多发多收
    • 异常捕获
  • 例子:服务器与多个客户端同时通信
    • 多客户端通信架构
    • 服务端代码
      • ServerReaderThread 服务端读数据线程

TCP通信

特点:面向连接、可靠通信
通信双方事先会采用“三次握手“方式建立可靠连接,实现端到端的通信;底层能保证数据成功传给服务端。
Java提供了一个java.net.Socket类来实现TCP通信

客户端向服务端发起连接请求,如果服务端接收该请求,两者之间会建立起一个可靠的通信管道。(被称为端到端的通信管道)

Socket客户端

在这里插入图片描述
在这里插入图片描述

ServerSocket服务端

在这里插入图片描述

例子:一发一收

最好将低级的字节输出流包装成数据输出流
客户端:
在这里插入图片描述
服务端:
在这里插入图片描述
服务端启动,在accept的位置阻塞等待客户端请求;

例子:多发多收

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

服务端:
在这里插入图片描述
如果客户端退出了,服务端仍然等客户端消息,通信管道突然断掉,服务端就会抛出异常
在这里插入图片描述
28行即是 String rs = dis.readUTF(); 这个位置(服务端阻塞等待客户端发来消息的地方)

异常捕获

通信管道突然断掉,需要对异常进行处理
在这里插入图片描述

例子:服务器与多个客户端同时通信

前一个多发多收的例子是不可以支持与多个客户端同时通信的

  • 因为服务端现在只有一个主线程,只能处理一个客户端的消息

多客户端通信架构

在这里插入图片描述

服务端代码

在这里插入图片描述

ServerReaderThread 服务端读数据线程

在这里插入图片描述
离线处理:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1587734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git可视化工具 - 推荐

概述 Git版本管理工具是我们日常开发中常用的工具,熟练使用它可以提高我们的工作效率。 当然老司机基本使用命令行的方式进行操作,新手可借助可视化工具来进行过渡,命令行与可视化工具结合使用来加深对Git的熟悉程度。 下面推荐两个较受欢迎…

第七篇:3.6 其他评估考虑/4.审计指南/5. 通用报告规范/6.披露指南、参考标准及其他 - IAB/MRC及《增强现实广告效果测量指南1.0》

翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇广告效果测量定义和其他矩阵之- 3.1 广告印象(AD Impression)第三篇广告效果测量定义和其他矩阵之- 3.2 可见性 (Viewability)第四篇 …

Flask基于flask_login实现登录、验证码

flask_login 是一个 Flask 扩展,用于在 Flask web 应用中实现用户会话管理。它允许你跟踪哪些用户已经登录,并管理他们的登录状态。flask_login 提供了用户认证的基础结构,但具体的用户验证(如用户名和密码检查)和存储…

DAY03|203.移除链表元素、707.设计链表、206.反转链表

203.移除链表元素、707.设计链表、206.反转链表 LeetCode 203.移除链表元素LeetCode 707.设计链表LeetCode 206.反转链表双指针法递归法 LeetCode 203.移除链表元素 注意,在dummy上操作,返回也返回dummy->next 如果头铁想返回head,那样会…

Redis入门到通关之Redis介绍

文章目录 1.Redis简单介绍1.1 非关系型数据库介绍 2.本文介绍如下内容3.初始Redis3.1.认识NoSQL3.1.3.查询方式3.1.4.事务3.1.5.总结 3.2.认识Redis3.3 安装Redis 1.Redis简单介绍 Redis是一种键值型的 NoSql 数据库,这里有两个关键字: 键值型NoSql 其…

负荷预测 | Matlab基于TCN-LSTM-Attention单输入单输出时间序列多步预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.负荷预测 | Matlab基于TCN-LSTM-Attention单输入单输出时间序列多步预测; 2.单变量时间序列数据集,采用前12个时刻预测未来96个时刻的数据; 3.excel数据方便替换,运行…

C++算法 —— 回溯(二)

一、字母大小写全排列 1.链接 784. 字母大小写全排列 - 力扣(LeetCode) 2.描述 3.思路 首先,根据题意,这是一个不能重复的全排列,并且根据特定的规则,我们需要分三种情况,一种是当字符为数字…

Android源码解析之截屏事件流程

今天这篇文章我们主要讲一下Android系统中的截屏事件处理流程。用过android系统手机的同学应该都知道,一般的android手机按下音量减少键和电源按键就会触发截屏事件(国内定制机做个修改的这里就不做考虑了)。那么这里的截屏事件是如何触发的呢…

基于spring boot的班级综合测评管理系统

基于spring boot的班级综合测评管理系统设计与实现 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开…

Linux进阶篇:linux操作系统一个神奇的分区:swap交换分区

linux操作系统一个神奇的分区:swap交换分区 1 Swap交换分区概念 Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就…

微信小程序 django+nodejs电影院票务售票选座系统324kd

小程序Android端运行软件 微信开发者工具/hbuiderx uni-app框架:使用Vue.js开发跨平台应用的前端框架,编写一套代码,可编译到Android、小程序等平台。 前端:HTML5,CSS3 VUE 后端:java(springbootssm)/python(flaskdja…

网盘——显示在线用户

1、查看在线用户 客户端发送查看请求(只发送用户的名字),服务器将数据库中在线的用户查询出来并发送给客户端,客户端接收在线用户信息并作显示。 1.1、查看数据库的数据,在这里需要使用socket,所以我们在…

springboot相关报错解决

Caused by: java.lang.ClassNotFoundException: 目录 Caused by: java.lang.ClassNotFoundException: org.springframework.context.event.GenericApplicationListener spring-boot-dependencies:jar:2.1.9.RELEASE was not found org.springframework.context.event.Generi…

界面设计【1】-项目的UI设计css

引言: 本篇博客对简单的css html界面设计做了简要介绍 这篇博客主要就是介绍了做横向项目中,CSS界面设计与优化。 界面设计【1】-项目的UI设计css 1. 什么是css?2. css编程demo3. 可视化效果 1. 什么是css? CSS是层叠样式表(Cascading S…

大型语言模型有什么用?

大型语言模型有什么用? 大型语言模型识别、总结、翻译、预测、生成文本和其他内容。 AI 应用程序正在总结文章、撰写故事和进行长时间对话——而大型语言模型正在承担繁重的工作。 大型语言模型或 LLM 是一种深度学习算法,可以根据从海量数据集中获得…

【PHP程序设计(高阶版)】——PHP操作MySQL教程

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

Linux C应用编程:MQTT物联网

1 MQTT通信协议 MQTT(Message Queuing Telemetry Transport,消息队列遥测传 输)是一种基于客户端-服务端架构的消息传输协议,如今,MQTT 成为了最受欢迎的物联网协议,已广泛应用于车联网、智能家居、即时聊…

TikTok怎么开通ads账户

一、TikTok的两种主流玩法 1、付费流量 蓝V认证TikTokAds(广告消耗达到3w美金可申请蓝V认证) 可以快速引流到独立站 2、免费流量 自己运营种草号、开直播 二、TikTok Ads如何开户? 开通广告账户 首先国内是无法自己申请TikTok Ads的&a…

精彩回顾 | 「AI 驱动增长,研发数智化升级」分享沙龙成功举办

AI 应用元年,人工智能技术将如何助力企业发展新质生产力,构建增长动能? 日前,LigaAI 与深圳市企业联合会、西云数据联合举办了「AI 驱动增长,研发数智化升级」技术专题沙龙。本次活动围绕「AI」应用实践,邀…

【QingHub】EMQX单节点一键部署

EMQX 简介 EMQX是全球最具扩展性的开源MQTT 代理,具有高性能,可在 1 个集群中连接 1 亿多个 IoT 设备,同时保持每秒 100 万条消息的吞吐量和亚毫秒级的延迟。 EMQX 支持MQTT、HTTP、QUIC、WebSocket等多种开放标准协议。它 100% 符合MQTT 5.…