运行在不同机器上的进程彼此通过向套接字发送报文来进行通信。每个进程好比是一座房子,进程的套接字就好比是一个门。套接字是应用进程和TCP之间的门,应用程序开发者可以控制套接字的应用层那一侧所有的东西,但是不能控制运输层那一侧。
服务器为了能对客户机程序发起连接作出响应,应满足:
第一、服务器程序不能处于休眠状态;
第二、服务器程序必须有某种套接字。
socket通信流程:
1、服务器根据地址类型(ipv4,ipv6)、socket类型、协议创建socket
2、服务器为socket绑定ip地址和端口号
3、服务器socket监听端口号请求,随时准备接收客户端发来的连接,这时候服务器的socket并没有被打开
4、客户端创建socket
5、客户端打开socket,根据服务器ip地址和端口号试图连接服务器socket
6、服务器socket接收到客户端socket请求,被动打开,开始接收客户端请求,直到客户端返回连接信息。这时候socket进入阻塞状态,所谓阻塞即accept()方法一直到客户端返回连接信息后才返回,开始接收下一个客户端谅解请求
7、客户端连接成功,向服务器发送连接状态信息
8、服务器accept方法返回,连接成功
9、客户端向socket写入信息
10、服务器读取信息
11、客户端关闭
12、服务器端关闭
网友评论