Python Glossary English

все Python 3socketфункция

socket.socketpair()

создание сокетов

Создаёт пару уже соединённых друг с другом сокетов — канал внутри программы без сети и без занятых портов.

Синтаксис

a, b = socket.socketpair(family=AF_UNIX, type=SOCK_STREAM, proto=0)

Лучший способ поупражняться с сокетами и тестировать сетевой код: не нужен ни сервер, ни порт, ни accept(). На Unix пара по умолчанию AF_UNIX, на Windows — эмуляция через AF_INET на 127.0.0.1. Закрывать нужно обе половины. recv() на пустом сокете ждёт вечно — в тестах ставьте settimeout(), тогда вместо зависания будет TimeoutError.

Примеры

import socket
a, b = socket.socketpair()
with a, b:
    a.sendall(b'ping')
    print(b.recv(1024))  # → b'ping'
    b.settimeout(0.1)
    try:
        b.recv(1024)
    except TimeoutError:
        print('нечего читать')  # → нечего читать
import socket
a, b = socket.socketpair()
print(a.family.name)  # → ? AF_UNIX (AF_INET на Windows)
a.close()
print(b.recv(1024))  # → b'' — другая сторона закрыта
b.close()

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности