Pythonでサーバーソケットでクライアント接続をリッスンとアクセプトする方法

この記事では、Pythonでサーバーソケットを使用してクライアントの接続をリッスンおよびアクセプトする方法について解説します。具体的なコード例とその解説、応用例を含めています。

目次

基本概念

サーバーソケットとは、サーバーコンピュータ上で動作し、ネットワークを介してクライアントコンピュータからの接続を待ち受けるプログラムの一部です。Pythonでこれを実現するには、主に`socket`モジュールを使用します。

サーバーソケットの役割

サーバーソケットの主な役割は以下の通りです。

  • リッスン(接続待ち)
  • アクセプト(接続許可)

基本的なコード例

まずは基本的なコード例から見ていきましょう。

import socket

# ソケットオブジェクトの作成
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# IPアドレスとポートを設定
host, port = "127.0.0.1", 5000
server_socket.bind((host, port))

# リッスン(接続待ち)
server_socket.listen(1)

# アクセプト(接続許可)
client_socket, address = server_socket.accept()
print(f"接続されました:{address}")

# ソケットを閉じる
client_socket.close()
server_socket.close()

コードの詳細解説

socketモジュールのインポート

`sCode`
import socket


この行で、Python標準ライブラリの`socket`モジュールをインポートしています。

ソケットオブジェクトの作成

`sCode`
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)


`socket.AF_INET`はIPv4を、`socket.SOCK_STREAM`はTCPをそれぞれ指定しています。

IPアドレスとポートの設定

`sCode`
host, port = “127.0.0.1”, 5000
server_socket.bind((host, port))