准备阶段:
需要导入socket库和threading库,如没有请自行安装,本次任务是在python3.9的编译器下运行(版本可自己选择,并不需要相同)
关于socket
socket 的典型应用就是 Web 服务器和浏览器:浏览器获取用户输入的URL,向服务器发起请求,服务器分析接收到的URL,将对应的网页内容返回给浏览器,浏览器再经过解析和渲染,就将文字、图片、视频等元素呈现给用户。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。
socket也分为阻塞式和非阻塞式:
- 阻塞式的socket的recv服从这样的规则:当缓冲区内有数据时,立即返回所有的数据;当缓冲区内无数据时,阻塞直到缓冲区中有数据。
- 非阻塞式的socket的recv服从的规则是:当缓冲区内有数据时,立即返回所有的数据;当缓冲区内无数据时,产生EAGAIN的错误并返回(在Python中会抛出一个异常)。
正常情况下,socket默认的是阻塞式的,接下来我们看看服务端和客户端的构建。
服务端与客户端
服务端创建可供连接的IP地址,accept会一直阻塞,直到有客户端连接才会处理客户端的请求,服务端与客户端的通信