socketserver基于TCP下的使用:
服务端
import socketserver class MyTcpHandler(socketserver.BaseRequestHandler): def handle(self): while True: try: data=self.request.recv(1024) if not data:break#此行代码针对linux系统 self.request.send(data.upper()) except ConnectionResetError: break self.request.close() if __name__ == '__main__': server=socketserver.ThreadingTCPServer(('127.0.0.1',8080),MyTcpHandler) server.serve_forever()
此代码中的self.request相当于一个conn:
客户端
from socket import * import os client=socket(AF_INET,SOCK_STREAM) client.connect(('127.0.0.1',8080)) while True: msg='%s hello'%os.getpid() client.send(msg.encode("utf-8")) data=client.recv(1024) print(data.decode('utf-8'))
socketserver基于UDP下的使用:
服务端
import socketserver class MyUdpHandler(socketserver.BaseRequestHandler): def handle(self): res=self.request[0] print('客户端发来的数据:',res) self.request[1].sendto(res.upper(),self.client_address) if __name__ == '__main__': server=socketserver.ThreadingUDPServer(('127.0.0.1',8080),MyUdpHandler) server.serve_forever()
此时的self.request是一个元组:
客户端
from socket import * import os client=socket(AF_INET,SOCK_DGRAM) while True: msg='%s hello'%os.getpid() client.sendto(msg.encode('utf-8'),('127.0.0.1',8080)) data,server_addr=client.recvfrom(1024) print(data.decode('utf-8'))