SocketServer モジュールを使用して、ネットワーク クライアントとサーバー間の同時接続とノンブロッキング通信を実現します
まず、SocketServer モジュールで利用可能なクラスを理解しましょう:
BaseServer: サーバーのコア機能とミックスイン クラス フックが含まれています; このクラスは派生のみに使用されるため、このクラスのインスタンスは生成されません。TCPServer および UDPServer の使用を検討します。
TCPServer/UDPServer: 基本的なネットワーク同期 TCP/UDP サーバー。
UnixStreamServer/UnixDatagramServer: 基本的なファイルベースの同期 TCP/UDP サーバー。
kingMixIn/ThreadingMixIn の場合: コア プロセスまたはスレッド関数を混合クラスとして実装し、サーバー クラスと一緒に使用され、いくつかの非同期機能を提供します。このクラスは直接インスタンス化されません。 ForkingTCPServer/ForkingUDPServer: ForkingMixIn と TCPServer/UDPServer の組み合わせ。
BaseRequestHandler: サービスリクエストを処理するためのコア機能が含まれています。このクラスは派生専用であるため、このクラスのインスタンスは生成されません。StreamRequestHandler または DatagramRequestHandler の使用を検討してください。
StreamRequestHandler/ DatagramRequestHandler: TCP/UDP サーバー用のサービス処理ツール。
#创建SocketServerTCP服务器: import SocketServer from SocketServer import StreamRequestHandler as SRH from time import ctime host = 'xxx.xxx.xxx.xxx' port = 9999 addr = (host,port) class Servers(SRH): def handle(self): print 'got connection from ',self.client_address self.wfile.write('connection %s:%s at %s succeed!' % (host,port,ctime())) while True: data = self.request.recv(1024) if not data: break print data print "RECV from ", self.client_address[0] self.request.send(data) print 'server is running....' server = SocketServer.ThreadingTCPServer(addr,Servers) server.serve_forever()
以上がPythonでSocketServerを使ってクライアントとサーバー間のノンブロッキング通信を実現する方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。