socketserver模块
socketserver模块能让TCP实现并行
客户端
import socket client = socket.socket() client.connect(('127.0.0.1', 8080)) while True: client.send(b'hello world') data = client.recv(1024) print(data.decode('utf-8'))
服务端
import socketserver class MyServer(socketserver.BaseRequestHandler): def handle(self): print('xxx') while True: try: data = self.request.recv(1024) print(self.client_address) # 客户端地址 print(data.decode('utf-8')) self.request.send(b'%s,xxx' % data) except Exception: break if __name__ == '__main__': """只要有客户端连接 会自动交给自定义类中的handle方法去处理""" server = socketserver.ThreadingTCPServer(('127.0.0.1', 8080), MyServer) # 创建一个基于TCP的对象 server.serve_forever() # 永久启动服务器
socketserver模块同样支持udp
客户端
import socket client = socket.socket(type=socket.SOCK_DGRAM) sever_addre = ('127.0.0.1', 8080) while True: client.sendto(b'hello', sever_addre) data, addre = client.recvfrom(1024) print(data.decode('utf-8'))
服务端
import socketserver class MyServer(socketserver.BaseRequestHandler): def handle(self): while True: data, sock = self.request print(self.client_address) print(data.decode('utf-8')) sock.sendto(data.upper(), self.client_address) if __name__ == '__main__': server = socketserver.ThreadingUDPServer(('127.0.0.1', 8080), MyServer) server.serve_forever()