Skip to content

ソケット通信

サーバーとクライアント間でネットワークを介してデータの送信・受信を行う仕組みのことである。

IPアドレスとポート番号を指定して、データのやり取りを行う。

  1. socket(): socket.socket(address family, socket type)

    ソケットを生成する。デフォルト設定でいい場合は、引数は不要。

    <引数>

    • address family: アドレスファミリー(デフォルト AF_INET)
    • socket type: ソケットタイプ(デフォルト SOCK_STREAM

    <返り値>

    • ソケットオブジェクト
  2. bind(): socket.bind(address)

    socket()を実行してもソケットが作られただけであり、IPアドレスとポート番号は未確定。

    そこで、bind()により、IPアドレスとポート番号をソケットに割り当てる。

    <引数>

    • IPアドレスとポート番号のタプル
  3. listen(): socket.listen([backlog])

    ソケットを接続待ちの状態にする。

    <引数>

    • 同時接続可能なクライアント数
  4. accept(): socket.accept()

    クライアントからの接続要求に対して、通信の確立を行う。

    <返り値>

    • ソケットオブジェクトと相手のIPアドレス
  5. recv(): socket.recv(bufsize)

    ソケットから送られたデータを受け取る。

    bufsizeは一度で受け取れる最大データ量を指定する。

    bufsizeには4096や2048のような、2の累乗を指定することが勧められている。

    <返り値>

    • 受け取ったデータのバイトオブジェクト
  6. close(): socket.close()

    ソケットを閉じる。