Python Glossary Русский

Python 3.8+socketfunction

socket.create_server()

creating sockets

Creates a listening TCP socket in one call: socket, SO_REUSEADDR, bind and listen together.

Syntax

srv = socket.create_server(address, *, family=AF_INET, backlog=None, reuse_port=False, dualstack_ipv6=False)

Its key service is SO_REUSEADDR on POSIX: without it, restarting a server right after stopping it fails with 'Address already in use' while old connections sit in TIME_WAIT. On Windows the option is deliberately not set, because there it lets another process grab the same port. Port 0 lets the OS pick a free port; read it back with getsockname(). Host '' listens on all interfaces, '127.0.0.1' only on this machine.

Examples

import socket
with socket.create_server(('127.0.0.1', 0)) as srv:
    host, port = srv.getsockname()
    print(host, port > 0)  # → 127.0.0.1 True
    print(srv.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR) != 0)  # → ? True на Linux и macOS
import socket
# то же самое вручную — легко забыть setsockopt до bind
srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
srv.bind(('127.0.0.1', 0))
srv.listen()
print(srv.type.name)  # → SOCK_STREAM
srv.close()

See also

Common errors

Open in the full glossarydocs.python.orgReport an inaccuracy