отправка запроса проверки связи ICMPv6 - PullRequest
0 голосов
/ 27 декабря 2018

Как отправить запрос проверки связи ICMPv6 с помощью Racket или Scheme?

Существует https://docs.racket -lang.org / net / index.html , но в нем почти ничего нетпротоколы интернет-уровня.

Существует https://docs.racket -lang.org / net2 / index.html , но он кажется незавершенным или заброшенным.

1 Ответ

0 голосов
/ 27 декабря 2018

Racket предоставляет функции для работы с протоколами уровня transport TCP и UDP на всех платформах, поддерживаемых Racket (например, * nix, macOS, Windows).

Но, насколько я знаю,это не относится к функциональности нижнего уровня network , такой как ICMP (для IPv4 или IPv6).

Racket предоставляет FFI, через который вы можете вызывать соответствующие специфичные для ОС функции, которые могутты делаешь это.Однако, в зависимости от того, что вы хотите выполнить, может быть проще использовать process для выполнения такой команды, как ping - затем read-line порт ввода Racket, переданный со стандартного вывода подпроцесса,и проанализировать это, чтобы получить необходимую информацию.(Если у вас есть вопросы о деталях использования process, это, вероятно, послужит хорошим отдельным вопросом для публикации здесь.)


Обновление: вместо process вы, вероятно, могли бы просто использоватьsystem:

#lang racket/base

(require racket/port
         racket/system)

(with-output-to-string
  (lambda () (system "ping -c 1 127.0.0.1")))

Возвращает строку вроде:

"PING 127.0.0.1 (127.0.0.1): 56 data bytes\n64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.068 ms\n\n--- 127.0.0.1 ping statistics ---\n1 packets transmitted, 1 packets received, 0.0% packet loss\nround-trip min/avg/max/stddev = 0.068/0.068/0.068/0.000 ms\n"
...