目录
三.TCP通信
3.1 TCP协议特点
3.2 TCP协议通信场景
3.3 TCP通信模型演示
3.4 Socket
3.5 ServerSocket
3.6 注意事项
3.7 案例
3.7.1 TCP通信—单发单收
3.7.2 TCP通信—多发多收
3.7.3 TCP通信—同时接收多个客户端的消息。
3.7.4 TCP通信—使用线程池优化(最终版)
四.TCP通信—即时通信
4.1 即时通信概述
4.2 案例
五.TCP通信—模拟B/S系统
5.1 什么是B/S架构
5.2 HTTP协议格式
5.3 案例
三.TCP通信
3.1 TCP协议特点
 1. 使用TCP协议,必须双方先建立连接,他是一种面向连接的可靠通信协议。
 
 2. 传输前,采用“三次握手”方式建立连接,所以是可靠的。
 
 
 3. 在连接中可进行大数据量的传输。
 
 4. 连接、发送数据都需要确认、且传输完毕后,还需释放已建立的连接,通信效率较低。
 
 
3.2 TCP协议通信场景
 对信息安全要求较高的场景,例如:文件下载、金融等数据通信。
 
 
3.3 TCP通信模型演示
 
3.4 Socket
 Socket类
 用于创建Socket通信管道,用于连接服务端。
 
 1.构造器
 
 
 2.常用API
 
 
3.5 ServerSocket
 用于注册服务器端的端口
 
 1.构造器
 
 
 2.常用API
 
 
3.6 注意事项
 1. 客户端怎么发,服务端就应该怎么收。
 
 2. 客户端如果没有消息,服务端会进入阻塞等待。
 
 3. Socket一方关闭或者出现异常,对方Socket也会失效或者出错。
 
 
3.7 案例
3.7.1 TCP通信—单发单收
 客户端步骤:
 
 ①创建客户端的
 Socket
 对象,请求与服务端的连接。
 
 ②使
 用
 socket
 对象调用
 getOutputStream
 ()
 方法得到字节输出流。
 
 ③使用字节输出流完成数据的发送。
 
 ④释放资源:关闭
 socket
 管道。
 
 客户端代码:
 
 
 服务器端步骤:
 
 ①创建
 ServerSocket
 对象,注册服务端端口。
 
 ②调用
 ServerSocket
 对象的
 accept()
 方法,等待客户端的连接,并得到
 Socket
 管道对象。
 
 ③通过
 Socket
 对象调用
 getInputStream
 ()
 方法得到字节输入流、完成数据的接收。
 
 ④释放资源:关闭
 socket
 管道
 
 服务器端代码:
 
 
3.7.2 TCP通信—多发多收
 改进案例1:
 
 ①可以使用死循环控制服务端收完消息继续等待接收下一个消息。
 
 ②客户端也可以使用死循环等待用户不断输入消息。
 
 ③客户端一旦输入了
 exit
 ,则关闭客户端程序,并释放资源。
 
 客户端代码:
 
 
 服务端代码:
 
 
 注意:本例实现了多发多收,但是服务端只能与一个客户端进行通信,因为服务端只有一个线程。
 
3.7.3 TCP通信—同时接收多个客户端的消息。
 服务端如何同时与多个客户端通信:引入多线程
 
 
 客户端代码:
 
 
 服务端代码:
 
 
 线程代码:
 
 
3.7.4 TCP通信—使用线程池优化(最终版)
 优点:
 
 服务端可以复用线程处理多个客户端,可以避免系统瘫痪。
 
 适合客户端通信时长较短的场景。
 
 客户端代码:
 
 
 服务器端代码:
 
 
 线程代码:
 
 
四.TCP通信—即时通信
4.1 即时通信概述
 之前我们的消息都是发给服务端的,即时通信是指一个客户端的消息发出去,其他客户端可以接收到。
 
 即时通信需要进行端口转发的设计思想。
 
 
4.2 案例
 实现即时通信。
 
 客户端代码:
 
 
 客户端接收消息的线程:
 
 
 服务端代码:
 
 
 服务端线程任务类:
 
 
五.TCP通信—模拟B/S系统
 之前的客户端需要我们自己去开发实现,其实就是C/S架构。
 
5.1 什么是B/S架构
 B/S架构就是使用浏览器去访问服务器端,不需要开发客户端。
 
 
5.2 HTTP协议格式
 
5.3 案例
 服务器端代码:
 
 
 线程任务类;
 
 



















