10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

backlogとは

Last updated at Posted at 2016-01-20

Pythonでsocketライブラリを書いていてsocket.listen(backlog)の引数に渡すbacklogが何か分からなかったので調べてみた。

注: タスク管理のBacklogのことではありません。

backlogとは

Man page of LISTENには、

The backlog argument defines the maximum length to which the queue of pending connections for sockfd may grow.

とある。

つまりbacklogとは、サーバにacceptされていないクライアントからの接続要求を保持しておくキューの最大長である。

検証

$ python3 -V
Python 3.5.1
import socket

if __name__ == '__main__':
    host = '127.0.0.1'
    port = 60001
    backlog = 2
    bufsize = 1024

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind((host, port))
    sock.listen(backlog)
    conn, address = sock.accept()

    while True:
        byte_msg = conn.recv(bufsize)
        str_msg = byte_msg.strip().decode('utf-8')
        if str_msg == 'end':
            break
        conn.send(bytes('{}!\n'.format(str_msg), 'utf-8'))

    conn.shutdown()
    conn.close()
    sock.shutdown()
    sock.close()
  • 1つ目のtelnet
$ telnet localhost 60001
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hey
Hey!

サーバから"!"を付与された文字列が返ってくる。

  • 2つ目、3つ目のtelnet
$ telnet localhost 60001
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hey

connectedと表示されてはいるが、反応は返ってこない。

  • 4つ目以降のtelnet
$ telnet localhost 60001
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Operation timed out
Trying ::1...
telnet: connect to address ::1: Connection refused
telnet: Unable to connect to remote host

Connection refusedになる。

acceptされた接続は1つ、unacceptedな接続が2つキューイングされ、キューにも入らない4つ目の接続要求は拒否されていることがわかる。

参考

https://linuxjm.osdn.jp/html/LDP_man-pages/man2/listen.2.html
http://u-kipedia.hateblo.jp/entry/2015/01/01/001135

10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?