TCP通信
- TCP通信
- Socket客户端
- ServerSocket服务端
- 例子:一发一收
- 例子:多发多收
- 异常捕获
- 例子:服务器与多个客户端同时通信
- 多客户端通信架构
- 服务端代码
- ServerReaderThread 服务端读数据线程
TCP通信
特点:面向连接、可靠通信
通信双方事先会采用“三次握手“方式建立可靠连接,实现端到端的通信;底层能保证数据成功传给服务端。
Java提供了一个java.net.Socket类来实现TCP通信
客户端向服务端发起连接请求,如果服务端接收该请求,两者之间会建立起一个可靠的通信管道。(被称为端到端的通信管道)
Socket客户端
ServerSocket服务端
例子:一发一收
最好将低级的字节输出流包装成数据输出流
客户端:
服务端:
服务端启动,在accept的位置阻塞等待客户端请求;
例子:多发多收
客户端:
服务端:
如果客户端退出了,服务端仍然等客户端消息,通信管道突然断掉,服务端就会抛出异常
28行即是 String rs = dis.readUTF(); 这个位置(服务端阻塞等待客户端发来消息的地方)
异常捕获
通信管道突然断掉,需要对异常进行处理
例子:服务器与多个客户端同时通信
前一个多发多收的例子是不可以支持与多个客户端同时通信的
- 因为服务端现在只有一个主线程,只能处理一个客户端的消息
多客户端通信架构
服务端代码
ServerReaderThread 服务端读数据线程
离线处理: