Java中的TCP通信

TCP通信

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

TCP通信

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

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

Socket客户端

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

ServerSocket服务端

在这里插入图片描述

例子:一发一收

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

例子:多发多收

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

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

异常捕获

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

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

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

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

多客户端通信架构

在这里插入图片描述

服务端代码

在这里插入图片描述

ServerReaderThread 服务端读数据线程

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

垃圾焚烧发电厂自动化解决方案

垃圾焚烧发电厂自动化解决方案 中控作为国内著名自动化产品供应商,已经为多家垃圾焚烧发电企业从控制层到管理层提供了完整的解决方案,包括垃圾进厂计量,垃圾预处理,垃圾焚烧炉,汽机监控,厂用电与电气系统监…

AWS游戏全球智能翻译,助力企业出海

随着全球数字化时代的到来,游戏行业已经成为跨越国界、语言和文化的强大力量。然而,要将游戏产品成功推向全球市场并确保用户体验的流畅与愉悦,语言障碍却是一道不可忽视的挑战。在这个多元化的世界中,如何解决语言障碍&#xff0…

故障诊断 | Matlab实现基于小波包结合卷积神经网络DWT-CNN实现电缆故障诊断算法

故障诊断 | Matlab实现基于小波包结合卷积神经网络DWT-CNN实现电缆故障诊断算法 目录 故障诊断 | Matlab实现基于小波包结合卷积神经网络DWT-CNN实现电缆故障诊断算法分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现基于小波包结合卷积神经网络DWT-CNN实现电…

手机银行客户端框架之EMAS介绍

EMAS简介 阿里巴巴应用研发平台(Enterprise Mobile Application Studio,简称EMAS),是面向全端场景(移动App、H5应用、小程序、Web应用、PC应用等)的一站式应用研发平台。EMAS基于广泛的云原生技术&#xf…

全新华为MateBook X Pro发布,将Ultra9放入980g超轻薄机身

2024年4月11日,在华为鸿蒙生态春季沟通会上全新的华为MateBook X Pro正式发布。该机以美学设计、创新科技以及智慧体验,追求重新定义Pro、重新定义旗舰,将颠覆消费者对传统轻薄本的认知。 华为MateBook X Pro追求极致轻薄与强大性能的完美结合…

GPT中的Transformer架构以及Transformer 中的注意力机制

目录 1 GPT中的Transformer架构 2 transformer中的注意力机制 参考文献: 看了两个比较好的视频,简单做了下笔记。 1 GPT中的Transformer架构 GPT是Generative Pre-trained Transformer单词的缩写,其中transformer是一种特定的神经网络&a…

02 - Git 之命令 +

1 Git相关概念 1.1 以下所谈三个区,文件并不只是简单地在三个区转移,而是以复制副本的方式转移 使用 Git 管理的项目,拥有三个区域,分别是 Working area工作区(亦称为 工作树Working Tree)、stage area …

内网穿透的应用-如何在Linux系统搭建docker-android结合内网穿透远程访问本地安卓开发环境

文章目录 1. 虚拟化环境检查2. Android 模拟器部署3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问小结 6. 固定Cpolar公网地址7. 固定地址访问 本文主要介绍如何在Ubuntu系统使用Docker部署docker-android安卓模拟器,并结合cpolar内网穿透工具实现公网远程访问本地…

【嵌入式学习】ARM day04.11

一、思维导图 二、练习 实现三个灯闪烁 汇编代码 .text .global _start _start: 使能GPIOE和F时钟LDR r0,0x50000A28LDR r1,[R0]ORR R1,R1,#(0X3<<4)STR R1,[R0]配置GPIOE和F的MODER寄存器LDR r0,0x50006000 GPIOELDR R1,0X50007000 G…

安装KVM和QEMU

KVM&#xff08;Kernel-based Virtual Machine&#xff09;是Linux下的一个全虚拟化解决方案&#xff0c;它包含一个可加载的内核模块kvm.ko&#xff0c;提供和硬件虚拟化相关的功能&#xff0c;是Linux系统下的X86架构全虚拟化解决方案之一。下面是如何使用搭建KVM的底层步骤&…

RabbitMQ消息模型之Simple消息模型

simple消息模型 生产者 package com.example.demo02.mq.simple;import com.example.demo02.mq.util.ConnectionUtils; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection;import java.io.IOException;/*** author Allen* 4/10/2024 8:07 PM* versi…

Flutter - 环境配置提示 cmdline-tools component is missing

问题&#xff1a; flutter doctor运行命令 flutter doctor 报错&#xff1a; Android toolchain - develop for Android devices (Android SDK version 30.0.2) ✗ cmdline-tools component is missing Run path/to/sdkmanager --install "cmdline-tools;lates…