Server side: gevent_server.py
Import sysimport socketimport timeimport geventfrom gevent import socket, Monkeymonkey.patch_all () def server (port): s = socket.socket () s.bind ((' 0.0.0.0 ', port)) S.listen ($) while True: cli, addr = s.accept () gevent.spawn (handle_request, CLI) #启动一个协程def handle_request (conn): try: While True: data = CONN.RECV (1024x768) print ("recv:", data) conn.send (data) if not data: conn.shutdown (socket. SHUT_WR) except Exception as ex: print (ex) finally: conn.close () if __name__ = = ' __main__ ': Server (8001)
Client: socket_client.py
Import sockethost = ' localhost ' # the remote Hostport = 8001 # The same port as used by the servers = Socket.socke T (socket.af_inet, socket. Sock_stream) S.connect ((HOST, PORT)) while True: msg = bytes (input (">>:"), encoding= "UTF8") S.sendall ( msg) data = S.recv (1024x768) # print (' Received ', data) s.close ()
Python-gevent module for large socket concurrency