socketserver.TCPServerExampleserver side
12345678910111213141516171819202122232425262728importsocketserverclassMyTCPHandler(socketserver.BaseRequestHandler):"""The request handler class for our server.It is instantiated once per connection to the server, and mustoverride the handle() method to implement communication to theclient."""defhandle(self):# self.request is the TCP socket connected to the clientself.data=self.request.recv(1024).strip()print("{} wrote:".format(self.client_address[0]))print(self.data)# just send back the same data, but upper-casedself.request.sendall(self.data.upper())if__name__=="__main__":HOST, PORT="localhost",9999# Create the server, binding to localhost on port 9999server=socketserver.TCPServer((HOST, PORT), MyTCPHandler)# Activate the server; this will keep running until you# interrupt the program with Ctrl-Cserver.serve_forever()client side
123456789101112131415161718192021importsocketimportsysHOST, PORT="localhost",9999data=" ".join(sys.argv[1:])# Create a socket (SOCK_STREAM means a TCP socket)sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)try:# Connect to server and send datasock.connect((HOST, PORT))sock.sendall(bytes(data+" ","utf-8"))# Receive data from the server and shut downreceived=str(sock.recv(1024),"utf-8")finally:sock.close()print("Sent: {}".format(data))print("Received: {}".format(received))上面这个例子你会发现,依然不能实现多并发,哈哈,在server端做一下更改就可以了
把
1server=socketserver.TCPServer((HOST, PORT), MyTCPHandler)改成
1server=socketserver.ThreadingTCPServer((HOST, PORT), MyTCPHandler)