Python Glossary English

все 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Сообщить о неточности