Service side:
fromSocketImport* fromThreadingImportThread fromConcurrent.futuresImportThreadpoolexecutordefCommunicate (conn): whileTrue:Try: Data=CONN.RECV (1024) if notData BreakConn.send (Data.upper ())exceptConnectionreseterror: Breakconn.close ()defServer (Ip,port, pool_size): Pool=threadpoolexecutor (pool_size) Server=socket (af_inet, Sock_stream) Server.bind ((Ip,port)) Server.listen (5) whileTrue:conn, addr=server.accept ()#T=thread (target=communicate,args= (conn,)) #T.start ()Pool.submit (Communicate, conn) Server.close ()if __name__=='__main__': Server ('127.0.0.1', 8082, 2)
Client:
fromSocketImport*Client=socket (Af_inet,sock_stream) client.connect (('127.0.0.1', 8082)) whiletrue:msg=input ('>>:'). Strip ()if notMsgContinueclient.send (Msg.encode ('Utf-8')) Data=CLIENT.RECV (1024) Print(Data.decode ('Utf-8') ) Client.close ()
5.1.24 thread pool/process pool for network concurrency