# socket.getaddrinfo ()

### socket.getaddrinfo ( *host*, *port*, *family=0*, *type=0*, *proto=0*, *flags=0* )

Преобразует аргументы ***host***/***port*** в последовательность из кортежа с 5 членами, которые содержат все необходимые аргументы для создания сокета, подключенного к этой службе. ***host*** - это доменное имя, строковое представление адреса IPv4/v6 или `None`. ***port*** - это строковое имя службы, такое как `'http'`, числовой номер порта или `None`. Передав `None` в качестве значения ***host*** и ***port***, вы можете передать `NULL` в базовый API C.

Аргументы семейства ***family***, типа ***type*** и прототипа ***proto*** могут быть дополнительно указаны, чтобы сузить список возвращаемых адресов. Передача нуля в качестве значения для каждого из этих аргументов выбирает полный диапазон результатов. Аргумент ***flags*** может быть одной или несколькими константами `AI_*` и будет влиять на способ вычисления и возврата результатов. Например, `AI_NUMERICHOST` отключит разрешение доменного имени и вызовет ошибку, если ***host*** является доменным именем.

Функция возвращает список из кортежа с 5 элементами со следующей структурой:

`(family, type, proto, canonname, sockaddr)`

В этих кортежах ***family***, ***type***, ***proto*** являются целыми числами и предназначены для передачи в функцию [socket ()](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/funkcii-soketov/socket.socket.md). ***canonname*** будет строкой, представляющей каноническое имя хоста ***host***, если `AI_CANONNAME` является частью аргумента ***flags***; иначе ***canonname*** будет пустым. ***sockaddr*** - это кортеж, описывающий адрес сокета, формат которого зависит от возвращаемого семейства ***family*** (кортеж с 2 элементами `(address, port)` для [AF\_INET](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.af_inet.md), кортеж с 4 элементами `(address, port, flowinfo, scope_id)` для [AF\_INET6](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/konstanty-soketov/socket.af_inet6.md)) и предназначен для передачи в метод [socket.connect ()](/python-docs/moduli-standartnoi-biblioteki-1/setevoe-i-mezhprocessnoe-vzaimodeistvie/socket/obekty-soketov/socket.connect.md).

Вызывает событие аудита `socket.getaddrinfo` с аргументами ***host***, ***port***, ***family***, ***type***, ***protocol***.

В следующем примере извлекается адресная информация для гипотетического TCP-соединения с `example.org` через порт 80 (результаты могут отличаться в вашей системе, если IPv6 не включен):

```python
>>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP)
[(<AddressFamily.AF_INET6: 10>, <SocketType.SOCK_STREAM: 1>,
 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)),
 (<AddressFamily.AF_INET: 2>, <SocketType.SOCK_STREAM: 1>,
 6, '', ('93.184.216.34', 80))]
```

*Изменено в версии 3.2*: параметры теперь можно передавать с помощью ключевых аргументов.

*Изменено в версии 3.7*: для адресов многоадресной рассылки IPv6 строка, представляющая адрес, не будет содержать `%scope_id` часть.


---

# 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.getaddrinfo.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.
