# socket.socket ()

### socket.socket ( *family=AF\_INET*, *type=SOCK\_STREAM*, *proto=0*, *fileno=None* )

Создает новый сокет, используя указанное семейство адресов ***family***, тип сокета ***type*** и номер протокола ***proto***. Семейство адресов должно быть [AF\_INET](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.af_inet.md) (по умолчанию), [AF\_INET6](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.af_inet6.md), [AF\_UNIX](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.af_unix.md), [AF\_CAN](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.af_can.md), [AF\_PACKET](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.af_packet.md) или [AF\_RDS](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.af_rds.md). Тип сокета должен быть [SOCK\_STREAM](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.sock_stream.md) (по умолчанию), [SOCK\_DGRAM](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.sock_dgram.md), [SOCK\_RAW](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.sock_raw.md) или, возможно, одной из других констант `SOCK_`. Номер протокола обычно равен нулю и может быть опущен, или в случае, когда семейство адресов [AF\_CAN](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.af_can.md), протокол должен быть одним из **CAN\_RAW**, [CAN\_BCM](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.can_bcm.md), [CAN\_ISOTP](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.can_isotp.md) или [CAN\_J1939](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.can_j1939.md).

Если указано ***fileno***, значения для ***family***, ***type*** и ***proto*** автоматически определяются из указанного файлового дескриптора. Автоопределение можно отменить, вызвав функцию с явными аргументами семейства ***family***, типа ***type*** или протокола ***proto***. Это влияет только на то, как Python представляет, например, возвращаемое значение [socket.getpeername ()](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/obekty-soketov/socket.getpeername.md), но не фактический ресурс ОС. В отличие от [socket.fromfd ()](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/funkcii-soketov/socket.fromfd.md), ***fileno*** вернет тот же сокет, а не его дубликат. Это может помочь закрыть отсоединенный сокет с помощью [socket.close ()](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/funkcii-soketov/socket.close.md).

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

Создает событие аудита `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](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.sock_nonblock.md) или [SOCK\_CLOEXEC](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.sock_cloexec.md) применяются к типу ***type***, они очищаются, и [socket.type](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/obekty-soketov/socket.type.md) не будет их отражать. Они по-прежнему передаются в базовый системный вызов **socket ()**.

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

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

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

### Пример

```python
sockobj = socket(AF_INET, SOCK_STREAM)
```

{% hint style="success" %}
Здесь с помощью модуля socket создается объект сокета TCP. Имена [AF\_INET](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.af_inet.md) и [SOCK\_STREAM](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.sock_stream.md) принадлежат предопределенным переменным, импортируемым из модуля socket; их совместное применение означает "создать сокет TCP/IP", стандартное средство связи для Интернета. Более точно, AF\_INET означает протокол адресов IP, а SOCK\_STREAM означает протокол передачи TCP. Комбинация AF\_INET/SOCK\_STREAM используется по умолчанию, потому что является наиболее типичной, но при этом обычно она указывается явно.

При использовании в этом вызове других имен можно создавать такие объекты, как сокеты UDP без логического соединения (второй параметр [SOCK\_DGRAM](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.sock_dgram.md)) и доменные сокеты UNIX на локальном компьютере (первый параметр [AF\_UNIX](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.af_unix.md)).
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/funkcii-soketov/socket.socket.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
