发送ICMPv6 ping请求

时间:2018-12-27 02:14:09

标签: scheme racket

如何使用球拍或Scheme发送ICMPv6 ping请求?

https://docs.racket-lang.org/net/index.html,但是它几乎没有关于互联网级别协议的信息。

https://docs.racket-lang.org/net2/index.html,但似乎未完成或被废弃。

1 个答案:

答案 0 :(得分:3)

Racket提供的功能可与Racket支持的所有平台上的 transport 层协议TCP和UDP一起使用(例如* nix,macOS,Windows)。

但据我所知,它不适用于较低的网络层功能,例如ICMP(用于IPv4或IPv6)。

Racket确实提供了FFI,您可以通过该FFI调用适当的特定于OS的功能,以使您可以执行此操作。但是,根据您要完成的工作,使用process运行类似UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf8 in position 12: invalid start byte的命令可能会更简单-然后使用ping从子流程标准输出通过管道输入Racket输入端口,并解析它以获取您所需的信息。 (如果您对使用read-line的细节有疑问,则可能需要在此处发布一个单独的好问题。)


更新:您可能只使用process而不是process

system

返回一个字符串,如:

#lang racket/base

(require racket/port
         racket/system)

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