socket.socket ()

socket.socket ( family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None )

Создает новый сокет, используя указанное семейство адресов family, тип сокета type и номер протокола proto. Семейство адресов должно быть AF_INET (по умолчанию), AF_INET6, AF_UNIX, AF_CAN, AF_PACKET или AF_RDS. Тип сокета должен быть SOCK_STREAM (по умолчанию), SOCK_DGRAM, SOCK_RAW или, возможно, одной из других констант SOCK_. Номер протокола обычно равен нулю и может быть опущен, или в случае, когда семейство адресов AF_CAN, протокол должен быть одним из CAN_RAW, CAN_BCM, CAN_ISOTP или CAN_J1939.

Если указано fileno, значения для family, type и proto автоматически определяются из указанного файлового дескриптора. Автоопределение можно отменить, вызвав функцию с явными аргументами семейства family, типа type или протокола proto. Это влияет только на то, как Python представляет, например, возвращаемое значение socket.getpeername (), но не фактический ресурс ОС. В отличие от socket.fromfd (), fileno вернет тот же сокет, а не его дубликат. Это может помочь закрыть отсоединенный сокет с помощью socket.close ().

Вновь созданный сокет не наследуется.

Создает событие аудита socket.__new__ с аргументами self, family, type, protocol.

Изменено в версии 3.3: Добавлено семейство AF_CAN. Добавлено семейство AF_RDS.

Изменено в версии 3.4: Добавлен протокол CAN_BCM.

Изменено в версии 3.4: возвращаемый сокет теперь не наследуется.

Изменено в версии 3.7: Добавлен протокол CAN_ISOTP.

Изменено в версии 3.7: Когда битовые флаги SOCK_NONBLOCK или SOCK_CLOEXEC применяются к типу type, они очищаются, и socket.type не будет их отражать. Они по-прежнему передаются в базовый системный вызов socket ().

Следовательно, будет по-прежнему создаваться неблокирующий сокет в операционных системах, поддерживающих SOCK_NONBLOCK, но для sock.type будет установлено значение socket.SOCK_STREAM.

sock = socket.socket(
    socket.AF_INET,
    socket.SOCK_STREAM | socket.SOCK_NONBLOCK)

Изменено в версии 3.9: Добавлен протокол CAN_J1939.

Пример

sockobj = socket(AF_INET, SOCK_STREAM)

Здесь с помощью модуля socket создается объект сокета TCP. Имена AF_INET и SOCK_STREAM принадлежат предопределенным переменным, импортируемым из модуля socket; их совместное применение означает "создать сокет TCP/IP", стандартное средство связи для Интернета. Более точно, AF_INET означает протокол адресов IP, а SOCK_STREAM означает протокол передачи TCP. Комбинация AF_INET/SOCK_STREAM используется по умолчанию, потому что является наиболее типичной, но при этом обычно она указывается явно.

При использовании в этом вызове других имен можно создавать такие объекты, как сокеты UDP без логического соединения (второй параметр SOCK_DGRAM) и доменные сокеты UNIX на локальном компьютере (первый параметр AF_UNIX).

Last updated