Java中的TCP通信

TCP通信

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

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

Socket客户端

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

ServerSocket服务端

在这里插入图片描述

例子:一发一收

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

例子:多发多收

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

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

异常捕获

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

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

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

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

多客户端通信架构

在这里插入图片描述

服务端代码

在这里插入图片描述

ServerReaderThread 服务端读数据线程

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值