Дополнительные сетевые средства
Эти дополнительные функции полезны для создания сетевых подключений и работы с ними. Обратите внимание, что они поддерживаются только в некоторых системах.
- Функция: network-interface-list &optional full family
-
Эта функция возвращает список, описывающий сетевые интерфейсы используемого вами компьютера. Значение представляет собой alist, элементы которого имеют форму
(ifname . address). ifname — строка с именем интерфейса, address имеет ту же форму, что и аргументы local-address и remote-address функцииmake-network-process, то есть вектор целых чисел. По умолчанию возвращаются адреса IPv4 и IPv6, если это возможно.Необязательный аргумент full, отличный от
nil, означает, что вместо этого возвращается список из одного или нескольких элементов формы(ifname addr bcast netmask). ifname — строка с неуникальным именем интерфейса. addr, bcast и netmask — векторы целых чисел, задающие IP-адрес, широковещательный адрес и маску сети.Необязательный аргумент family, заданный символом
ipv4илиipv6, ограничивает возвращаемую информацию адресами IPv4 и IPv6 соответственно, независимо от значения full. Если указатьipv6, когда поддержка IPv6 недоступна, будет выдана ошибка.Примеры:
(network-interface-list) ⇒ (("vmnet8" . [172 16 76 1 0]) ("vmnet1" . [172 16 206 1 0]) ("lo0" . [65152 0 0 0 0 0 0 1 0]) ("lo0" . [0 0 0 0 0 0 0 1 0]) ("lo0" . [127 0 0 1 0]))(network-interface-list t) ⇒ (("vmnet8" [172 16 76 1 0] [172 16 76 255 0] [255 255 255 0 0]) ("vmnet1" [172 16 206 1 0] [172 16 206 255 0] [255 255 255 0 0]) ("lo0" [65152 0 0 0 0 0 0 1 0] [65152 0 0 0 65535 65535 65535 65535 0] [65535 65535 65535 65535 0 0 0 0 0]) ("lo0" [0 0 0 0 0 0 0 1 0] [0 0 0 0 0 0 0 1 0] [65535 65535 65535 65535 65535 65535 65535 65535 0]) ("lo0" [127 0 0 1 0] [127 255 255 255 0] [255 0 0 0 0]))
- Функция: network-interface-info ifname
-
Эта функция возвращает информацию о сетевом интерфейсе с именем ifname. Значение представляет собой список формы
(addr bcast netmask hwaddr flags).- addr
Адрес интернет-протокола.
- bcast
Широковещательный адрес.
- netmask
Маска сети.
- hwaddr
Адрес канального уровня (например, MAC-адрес Ethernet).
- flags
Текущие флаги интерфейса.
Обратите внимание, что эта функция возвращает сведения только об IPv4.
- Функция: format-network-address address &optional omit-port
-
Эта функция преобразует представление сетевого адреса в Lisp в строку.
Вектор из пяти элементов
[a b c d p]представляет собой IPv4-адрес a.b.c.d и номер порта p.format-network-addressпреобразует его в строку"a.b.c.d:p".Вектор из девяти элементов
[a b c d e f g h p]представляет собой IPv6-адрес вместе с номером порта.format-network-addressпреобразует его в строку"[a:b:c:d:e:f:g:h]:p".Если вектор не содержит номер порта p или если omit-port не равен
nil, результат не будет содержать суффикс:p.
- Функция: network-lookup-address-info name &optional family hints
-
Эта функция выполняет поиск по имени узла name, которое должно состоять только из символов ASCII; в противном случае будет выдана ошибка. Если нужно искать интернационализированные имена узлов, сначала вызовите
puny-encode-domainдля name.В случае успеха функция возвращает список представлений сетевых адресов в Lisp (описание формата см. в разделе
make-network-process), в противном случае возвращаетnil. В последнем случае она также записывает сообщение об ошибке, которое, предположительно, объясняет причину сбоя.По умолчанию функция выполняет поиск как по IPv4, так и по IPv6. Необязательный аргумент family управляет этим поведением: указание символа
ipv4илиipv6ограничивает поиск адресами IPv4 или IPv6 соответственно.Если необязательный аргумент hints равен
numeric, функция рассматривает name как числовой IP-адрес (и не выполняет поиск DNS). Это можно использовать, чтобы проверить, является ли строка допустимым числовым представлением IP-адреса, или преобразовать числовую строку в каноническое представление. Например:(network-lookup-address-info "127.1" 'ipv4 'numeric) ⇒ ([127 0 0 1 0]) (network-lookup-address-info "::1" nil 'numeric) ⇒ ([0 0 0 0 0 0 0 1 0])Имейте в виду, что существуют неожиданные допустимые формы, особенно для IPv4. Например, «0xe3010203» и «0343.1.2.3» — допустимые адреса, как и «0» и «1» (но для IPv6 они недопустимы).
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Misc-Network.html