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