python中的sockeserver模块简单实用
1、 socketserver模块简介
在python的socket编程中,实用socket模块的时候,是不能实现多个连接的,当然如果加入其它的模块是可以的,例如select模块,在这里见到的介绍下socketserver模块。
socketserver,看其名字,就知道是一个socket的服务器模块的使用,在这个模块中,主要也就是实现服务器类的相关功能,在其中,也就是将socket模块和select模块进行了封装,从而创建了一些基类供人使用。
SocketServer模块简单化了编写网络服务器的工作。
它提供了四个基本的服务类:TCPServer(使用TCP协议)、UDPServer(使用数据报)、UnixStreamServer、
2、 socketserver服务器端和客户端代码
用SocketServer创建一个服务器需要三步:
1、通过子类化BaseRequestHandler类和覆盖它的handle()方法来创建一个请求处理器类,用于处理进来
的请求;
2、实例化服务类如TCPServer,并传递给它参数:服务器地址和请求处理器类;
3、调用服务实例对象的handle_request()或serve_forever()方法去处理请求。
1 #服务端 2 import socketserver 3 import time 4 class MyServer(socketserver.BaseRequestHandler): 5 def handle(self): 6 #print("服务端启动") 7 print(self.client_address) 8 while True: 9 conn=self.request 10 #print(self.client_address) 11 while True: 12 client_data=conn.recv(1024) 13 print(str(client_data,'utf8')) 14 print('waiting....') 15 strtime=time.strftime('%Y-%m-%d %X') 16 inp=input('>>>>>>>>') 17 data=('%s %s'%(inp,strtime)) 18 conn.sendall(bytes(data,'utf8')) 19 conn.close() 20 21 if __name__=='__main__': 22 server=socketserver.ThreadingTCPServer(('127.0.0.1',8090),MyServer) 23 server.serve_forever()
#客户端 import socket sk=socket.socket() print(sk) address=('127.0.0.1',8090) sk.connect(address) while True: inp =input('>>>>>') if inp=='exit': break sk.sendall(bytes(inp,'utf-8')) data=sk.recv(1024) print(str(data,'utf8')) sk.close()
运行结果可以打开多个客户端与服务端发送信息:
Python 深入剖析SocketServer模块:https://blog.csdn.net/liuming9283/article/details/52439880(转载)