socketserver模块的使用
socketserver是一个集成socket,thread,select模块的综合模块,主要用实现用较为简单的方法建立服务端的模块。可以应对较小并发的客户需求。
socketserver建立TCP服务端。
服务端
import socketserver#处理的方法(服务端工作的方式的类)class Myhandler(socketserver.BaseRequestHandler): def handle(self):#开始工作自动执行下列函数 print(self.server)#socketserver对象 print(self.client_address)#客户端地址 print(self.request)#客户端连接对象 while True: data = self.request.recv(1024) self.request.send(data.upper())server = socketserver.ThreadingTCPServer(("127.0.0.1",6666),Myhandler)#一以线程的方式建立tcp服务端server.serve_forever()#让服务端持续工作
客户端
import socketclient = socket.socket()client.connect(("127.0.0.1",6666))while True: msg = input(">>>") if not msg: continue client.send(msg.encode("utf-8")) data = client.recv(1024) print(data.decode("utf-8"))
基于UDP的socketserver
服务端
import socketserveraddr = ("127.0.0.1",3239)class Myhandle(socketserver.BaseRequestHandler): def handle(self): print(self.server)#socketserver对象 print(self.client_address) print(self.request)#数据,和服务端socket对象 data = self.request[0] self.request[1].sendto(data.upper(),self.client_address)server = socketserver.ThreadingUDPServer(addr,Myhandle)server.serve_forever()
客户端
import socketclient = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)addr = ("127.0.0.1",3239)while True: msg = input(">>>") client.sendto(msg.encode("utf-8"),addr) data = client.recvfrom(1024) print(data[0].decode("utf-8"))