python小白-day8 socketserver模块
Posted 显卡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python小白-day8 socketserver模块相关的知识,希望对你有一定的参考价值。
SocketServer模块
SocketServer内部使用 IO多路复用 以及 “多线程” 和 “多进程” ,从而实现并发处理多个客户端请求的Socket服务端。即:每个客户端请求连接到服务器时,Socket服务端都会在服务器是创建一个“线程”或者“进程” 专门负责处理当前客户端的所有请求。
ThreadingTCPServer
ThreadingTCPServer实现的Soket服务器内部会为每个client创建一个 “线程”,该线程用来和客户端进行交互。
1、ThreadingTCPServer基础
使用ThreadingTCPServer:
创建一个继承自 SocketServer.BaseRequestHandler 的类
类中必须定义一个名称为 handle 的方法
启动ThreadingTCPServer
?多并发实例:
服务端:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #!/usr/bin/env python import socketserver class MyTCPHandler(socketserver.BaseRequestHandler): def handle( self ): #handle函数必须重新定义 while True : print ( ‘new conn:‘ , self .client_address) data = self .request.recv( 1024 ) if not data: break print ( ‘client says:‘ ,data.decode()) self .request.send(data) if __name__ = = ‘__main__‘ : host,port = ‘localhost‘ , 50007 server = socketserver.ThreadingTCPServer((host,port),MyTCPHandler) server.serve_forever() |
客户端:
1 2 3 4 5 6 7 8 9 10 11 12 13 | #!/usr/bin/env python import socket ip_port = ( ‘127.0.0.1‘ , 50007 ) sk = socket.socket() sk.connect(ip_port) while True : user_input = input ( ‘>>:‘ ) sk.send(bytes(user_input, ‘utf8‘ )) server_reply = sk.recv( 1024 ) print ( ‘server reply:‘ , str (server_reply, ‘utf8‘ )) sk.close() |
以上是关于python小白-day8 socketserver模块的主要内容,如果未能解决你的问题,请参考以下文章