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
.
Изменено в версии 3.9: Добавлен протокол CAN_J1939.
Пример
Здесь с помощью модуля 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