1.TCP は、一方がデータを送信する前に、2 つの当事者間で接続を確立する必要があり、通信が完了した後、接続を 4 回切断する必要があります。 TCP のハーフクローズによって発生するハンドシェイク。一方の当事者がデータの送信を完了した後、この方向の接続を終了するために FIN を送信する必要がありますが、アプリケーションは FIN を受信した後もデータを送信できます。これはめったに行われません。TCP 接続の確立と切断のプロセスは次のとおりです。
2. Python は TCP サーバーとクライアントのプログラミングを実装できます。
サーバー側:
クライアント:
3. ソケットサーバーフレームワークを使用して TCP サーバーを作成します
Socketserver モジュールには、4 つのサーバー クラスが含まれています。TCPServer は TCP プロトコルを使用し、UDPServer は UDP プロトコルを使用します。また、あまり一般的ではない 2 つのクラス、つまり UnixStreamServer と UnixDatagramServer のみが使用されます。 UNIX 環境で便利です。
サーバー プログラミングを使用するには、まず、BaseRequestHandler クラスを継承するリクエスト ハンドル クラスを作成し、そのハンドル メソッドを書き換えてサーバー クラスを追加します。ホスト名、ポート番号、ハンドル クラスが渡され、server_forever() メソッドが呼び出されてリクエストを処理します。
ソケットサーバーフレームワークを使用するサーバー:
上記のソケットサーバーサーバーは 1 つのリクエストのみを処理できます。複数のリクエストを処理したい場合は、フォークまたはスレッドを使用してマルチプロセスまたはマルチスレッドサーバーを実装できます。フォークとスレッドを使用するサーバー コードは次のとおりです:
フォークサーバーを使用します:
マルチスレッドサーバーを使用します:
class Handler(StreamRequestHandler):
def handle(self):
addr=self.request.getpeername()
print "接続元",addr
self.wfile.write( "接続済み")
server=Server(('',10000),Handler)
server.serve_forever()