все Python 3socketфункция
socket.create_connection()
создание сокетов
Подключается к TCP-серверу по (host, port): сам разрешает имя и перебирает адреса IPv4 и IPv6 до первого удачного.
Синтаксис
sock = socket.create_connection(address, timeout=GLOBAL_DEFAULT, source_address=None, *, all_errors=False)
Удобнее ручного socket()+connect(): не нужно выбирать семейство адресов. Без timeout берётся getdefaulttimeout(), то есть None — подключение к молчащему хосту висит минутами. Переданный timeout остаётся на возвращённом сокете и действует на все последующие recv/send, а не только на connect. Закрытый порт даёт ConnectionRefusedError; all_errors=True (3.11+) поднимает ExceptionGroup с ошибками всех попыток.
Примеры
import socket
with socket.create_server(('127.0.0.1', 0)) as srv:
with socket.create_connection(srv.getsockname(), timeout=2) as cli:
print(cli.gettimeout()) # → 2.0
conn, _ = srv.accept()
conn.close()
import socket
with socket.socket() as tmp:
tmp.bind(('127.0.0.1', 0))
port = tmp.getsockname()[1] # порт свободен, но его никто не слушает
try:
socket.create_connection(('127.0.0.1', port), timeout=1)
except ConnectionRefusedError as e:
print(type(e).__name__) # → ConnectionRefusedError
# Python 3.11+
import socket
with socket.socket() as tmp:
tmp.bind(('127.0.0.1', 0))
port = tmp.getsockname()[1]
try:
socket.create_connection(('127.0.0.1', port), timeout=1, all_errors=True)
except* ConnectionRefusedError as eg:
print(type(eg).__name__, len(eg.exceptions)) # → ExceptionGroup 1
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности