ソケットプログラミングは、デバイス間のデータ交換を可能にするため、ネットワーク通信に不可欠です。Pythonのソケットモジュールは、BerkeleyソケットAPIへのインターフェイスを提供し、ネットワーク上でのプロセス間通信を可能にします。このチュートリアルでは、ソケットサーバーとクライアントの作成、複数の接続の処理、Pythonのソケットモジュールでのエラーの管理について説明します。このチュートリアルの終了時点で、Pythonにおけるソケットとは、ソケットAPIを使用してネットワーク上でデータを送受信するためのエンドポイントであることを理解することになります。Pythonにおけるソケットプログラミングでは、ソケットを使用してネットワーク上でサーバーとクライアント間の通信を確立します。シンプルなエコーサーバーは、クライアントの接続を待ち、受信したメッセージをエコーするためにソケットを使用して作成できます。Pythonソケットを使用して複数のクライアントを処理するには、非ブロッキングソケットと同時接続用のセレクターモジュールを使用します。Pythonのソケットプログラムでの接続エラーは、エラー処理を実装し、OSErrorなどの例外を使用することで管理できます。Transmission Control Protocol(TCP)は、ネットワークでパケットがドロップされた場合に検出して送信者が再送信するという信頼性の高いプロトコルであり、データは送信者が書き込んだ順序でアプリケーションによって読み取られます。一方、User Datagram Protocol(UDP)ソケットは、ソケットを作成する際にsocket.SOCK_DGRAMを使用して作成され、信頼性がなく、受信者が読み取るデータは送信者の書き込み順序と異なる可能性があります。ネットワークはベストエフォート配信システムであり、TCPはパケットロス、データ到着の順序の混乱などのネットワーク上で通信する際に必ず発生する落とし穴について心配する必要を取り除きます。
realpython.com
Real Python: Socket Programming in Python (Guide)
