ホームページ > バックエンド開発 > Python チュートリアル > PythonでSocketServerを使ってクライアントとサーバー間のノンブロッキング通信を実現する方法の紹介

PythonでSocketServerを使ってクライアントとサーバー間のノンブロッキング通信を実現する方法の紹介

高洛峰
リリース: 2017-03-20 11:47:48
オリジナル
1708 人が閲覧しました

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 サーバー用のサービス処理ツール。

ここで、StreamRequestHandler と ThreadingTCPServer を使用して、クライアントとサーバー間の同時非ブロッキング ソケット接続を実装します。

ThreadingTCPServer は ThreadingMixIn から派生し、主にコアプロセスの組み合わせとスレッド機能を実装します。

StreamRequestHandler は主に TCP/UDP サーバーのサービス処理ツールとして使用されます。

1. SocketServerTCP サーバーを作成します

#创建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()
ログイン後にコピー

2. SocketServerTCP クライアントを作成します

以上がPythonでSocketServerを使ってクライアントとサーバー間のノンブロッキング通信を実現する方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート