Spec-Zone.ru › Elisp

Дополнительные сетевые средства

Эти дополнительные функции полезны для создания сетевых подключений и работы с ними. Обратите внимание, что они поддерживаются только в некоторых системах.

Функция: 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API