网络编程--6
C/S通信原理(Client/Server)
TCP客户端和服务端会话
阻塞式方法详解
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
1. C/S通信原理
1). 服务器端的特点
(1). 一个服务端的存在可以允许接入多个客户端
(2). Server端和单个Client端通信过程
{1}. 服务端ServerSocket对象本身没有流对象, 但是客户端Socket对象本身有流对象。
{2}. 但是一旦某个客户端和服务端建立了连接之后,服务端会通过自身的accept方法获取到这个客户端的通信端点Socket对象的副本,并使用这个Socket副本和真实的客户端对象进行通信。
e.g.
ServerSocket ss =new ServerSocket(10003); Socket s =ss.accept();
Socket s=ss.accept();使得ServerSocket端点获取到了客户端Socket的副本
因此在服务端的程序仅仅是通过ServerSocket对象获取到连接进来的Client的Socket对象之后,便是用这个Socket进行通信。
2). C/S通信原理
一个Server端和多个Client端进行通信的原理。
(1). 一个Server端和多个Client端的通信原理图
(2). 通信过程分析
[1]. 客户端Socket A对象向Server端发了一个请求。假设此时连接成功。Server端便会通过自身的accept()方法获取客户端A的副本Socket对象。
[2]. A对象本身有输入流对象in和输出流对象out,因此在Server端的A对象的副本同样也有in和out两个对象。
[3]. 从客户端A向服务端Server发送数据
客户端的A对象通过自身的out向Server端发送出数据,此时Server端使用A对象的副本的in对象进行数据的读取。
[4]. 客户端A从服务端Server读取数据
Server端