Table of Contents
2.python socket.error: [Errno 9] Bad file descriptor的解决办法
套接字被关闭了,所以出现这种错误
并发网络通信模型
常见模型分类
循环服务器模型
更适合UPD
IO并发模型
多进程、线程网络并发模型
python SockerServer
SockerServer介绍
- socketserver是标准库中的一个高级模块
- socketserver可以简化创建客户端跟创建服务端的代码
首先导入模块:import socketserver
- 初始化控制器类Handler【Handler是一个继承BaseRequestHandler的类Handler中的handle方法决定了每一个连接过来的操作】 【控制器类的类名可以是其他的,不一定是Handler,只要继承了BaseRequestHandler就行】
-
- init():初始化控制设置,初始化连接套接字,地址,处理实例等信息
- handle(): 定义了如何处理每一个连接。
- setup(): 在handle()之前执行.一般用作设置默认之外的连接配置
- finish():在handle()之后执行。
- 变量:
-
- self.request属性是套接字对象,所以使用self.request.xxxx调用套接字的函数
- self.server包含调用处理程序的实例
- self.client_address是客户端地址信息
定义服务端类型【将Handler类和服务端的地址端口参数传入】:
-
- TCPServer 支持ipv4的TCP协议的服务器。
- server=socketserver.TCPServer((HOST,PORT),Handler)【Handler】
- UDPServer 支持ipv4的UDP协议的服务器。
- server=socketserver.UDPServer((HOST,PORT),Handler)
运行服务端