Python Socket第二篇(socketserver)

本节内容

  1. socketserver基础知识

  2. 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

 

 

 

 

posted @ 2017-03-24 17:36  40块钱抓娃娃  阅读(286)  评论(0编辑  收藏  举报