Spec-Zone.ru › Elisp

Сетевые параметры

При создании сетевого процесса можно указать следующие сетевые параметры. За исключением :reuseaddr, эти параметры можно также задать или изменить позднее с помощью set-network-process-option.

Для серверного процесса параметры, указанные с помощью make-network-process, не наследуются клиентскими соединениями, поэтому при создании каждого дочернего соединения необходимо задавать нужные параметры.

:bindtodevice device-name

Если device-name — непустая строка, задающая имя сетевого интерфейса (см. network-interface-list), обрабатываются только пакеты, полученные через этот интерфейс. Если device-name равно nil (значение по умолчанию), обрабатываются пакеты, полученные через любой интерфейс.

В некоторых системах для использования этого параметра могут потребоваться специальные привилегии.

:broadcast broadcast-flag

Если значение broadcast-flag для процесса дейтаграмм отлично от nil, процесс будет получать дейтаграммы, отправленные на широковещательный адрес, и сможет отправлять пакеты на широковещательный адрес. Для потокового соединения этот параметр игнорируется.

:dontroute dontroute-flag

Если значение dontroute-flag отлично от nil, процесс может отправлять данные только узлам в той же сети, что и локальный узел.

:keepalive keepalive-flag

Если значение keepalive-flag для потокового соединения отлично от nil, включается обмен низкоуровневыми сообщениями поддержания соединения.

:linger linger-arg

Если значение linger-arg отлично от nil, перед удалением соединения следует дождаться успешной передачи всех поставленных в очередь пакетов (см. delete-process). Если linger-arg — целое число, оно задаёт максимальное время ожидания отправки поставленных в очередь пакетов перед закрытием соединения, в секундах. Значение по умолчанию — nil, что означает: при удалении процесса неотправленные пакеты из очереди отбрасываются.

:oobinline oobinline-flag

Если значение oobinline-flag для потокового соединения отлично от nil, данные вне основного потока принимаются в обычном потоке данных. В противном случае данные вне основного потока игнорируются.

:priority priority

Задаёт приоритет пакетов, отправляемых через это соединение, целым числом priority. Интерпретация этого числа зависит от протокола; например, оно может задавать поле TOS (тип обслуживания) в IP-пакетах, отправляемых через это соединение. Кроме того, в зависимости от системы этот параметр может влиять на другие настройки, например выбирать определённую очередь вывода сетевого интерфейса.

:reuseaddr reuseaddr-flag

Если значение reuseaddr-flag для потокового серверного процесса отлично от nil (значение по умолчанию), серверу разрешается повторно использовать определённый номер порта (см. :service), если только другой процесс на этом узле уже не прослушивает этот порт. Если значение reuseaddr-flag равно nil, после последнего использования этого порта (любым процессом на узле) может пройти некоторое время, прежде чем станет возможным запустить новый сервер на этом порту.

:nodelay nodelay-flag

Если значение nodelay-flag отлично от nil, для сокета включается параметр TCP_NODELAY. Это отключает алгоритм Нейгла: сетевые сегменты отправляются как можно скорее, даже если в них мало данных. Это уменьшает задержку в сетевом соединении, но может привести к отправке большого количества небольших пакетов.

Функция: set-network-process-option process option value &optional no-error

Эта функция задаёт или изменяет сетевой параметр сетевого процесса process. Допустимые параметры и значения такие же, как для make-network-process. Если no-error отлично от nil, эта функция возвращает nil вместо сигнала об ошибке, если option не является поддерживаемым параметром. При успешном завершении функция возвращает t.

Текущее значение параметра можно получить с помощью функции process-contact.

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/Network-Options.html

Spec-Zone.ru

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