Python@Socket

2019-9-1

服务器与客户端通信,实际是两个进程在通信。

在terminal(mac或windows)里输入ps,一般会显示本地的所有进程,包括其pid、创建时间等等。

由于两个进程不相关,所以单独通过pid等进行区分是没法避免冲突的,这就需要将三元组(地址、端口和协议)考虑进来。

同时直接对TCP/UDP/IP进行复杂操作太麻烦,因此在应用层和传输层之间,使用Socket进行抽象,通过几个简单接口来实现通信。Socket起源于Unix,在其一切皆文件对思路下,服务器和客户度各自维护一个文件,Socket也是一种“文件打开-读/写-文件关闭”对模式,建立连接后,各自对自己的文件进行写或读的操作,同时供对方读或写,通讯结束关闭这个文件。

流程如下:

1-服务器创建socket
2-服务器为socket绑定IP+端口
3-服务器监听socket
4-客户端创建socket
5-客户端打开socket,根据服务器地址和端口访问服务器socket
6-服务器socket接收到客户端socket请求,被动打开!!!开始接受客户端请求,当客户端返回连接信息,socket进入阻塞状态即accept()方法一直到客户端返回连接信息后才返回
7-客户端连接成功,向服务器发送连接状态信息
8-服务器accept方法返回,连接成功
9-服务器读取信息
10-客户端关闭
11-服务器关闭

Leave a Reply

Your email address will not be published. Required fields are marked *