Python Socket第二篇(socketserver)
本节内容
-
socketserver基础知识
-
ThreadingTCPServer源码剖析
1.socketserver基础
ThreadingTCPServer实现的Soket服务器内部会为每个client创建一个 “线程”,该线程用来和客户端进行交互。
使用ThreadingTCPServer:
- 创建一个继承自 SocketServer.BaseRequestHandler 的类
- 类中必须定义一个名称为 handle 的方法
- 启动ThreadingTCPServer
- ForkingTCPServer和ThreadingTCPServer的使用和执行流程基本一致,只不过在内部分别为请求者建立 “线程” 和 “进程”。
###服务端
#!/usr/bin/env python # -*- coding:utf-8 -*- import socketserver class Myserver(socketserver.BaseRequestHandler): def handle(self): # 需要对handle进行重写 conn = self.request while True: data = conn.recv(1024) # 接受消息 conn.send(data) # 原封不动的把消息返回 if __name__ == '__main__': server = socketserver.ThreadingTCPServer(('127.0.0.1',8009),Myserver) server.serve_forever()
###客户端
#!/usr/bin/env python # -*- coding:utf-8 -*- import socket conn = socket.socket() conn.connect(('127.0.0.1',8009)) while True: comm = input(':>>') conn.send(comm.encode()) print(conn.recv(1024).decode())
2.源码剖析
老师博客:http://www.cnblogs.com/wupeiqi/articles/5040823.html
最新内容可以看我的blog: 40kuai