如何使用 telnet 在低级别与 Swank 服务器进行交互?
How to interact with a Swank server at a low level with telnet?
我正在尝试从命令行使用 Swank 服务器(没有特定的生产目的,只是想了解一些内容以备后用),但我不知道我可以输入什么来自 telnet
会话以获得任何可用的答案;例如,我如何评估 (+ 1 1)
?
一个告诉:
It is indeed possible to communicate with a swank server if you familiarize yourself with the swank protocol, which seems to be underdocumented (see e. g. here: https://github.com/astine/swank-client/blob/master/swank-description.markdown). However, this exposes a TCP socket over a network, which could be unsafe. Once I tried that, too, but I was not satisfied with the IPC speed.
和link其实给出了一些提示,可惜没有例子。我无法得到任何结果。
这是我试过的;使用
单独启动服务器后
(swank:create-server :port 4005 :dont-close t :style NIL)
我试过类似的东西:
~ $ telnet localhost:4005
00001e(swank:listener-eval (+ 1 2))
并收到以下错误消息:
" "Reader error in file #<string-input stream from \"(swan...\" 0x6045ce0640>, position 20:
Cannot find the external symbol LISTENER-EVAL in #<\"SWANK\" package>.")Connection closed by foreign host
在这种情况下,我应该输入的字符串是什么?
我成功完成了这项工作:
00003e(:emacs-rex (swank:interactive-eval "(+ 1 2)") "cl-user" t 8)
注意第一个是 :emacs-rex
关键字,以及要评估的形式是如何在字符串中的。 8 在这里只是一个任意值。回复首先以00A1C8(:indentation-update ...)
开头,后面是:
000031(:return (:ok "=> 3 (2 bits, #x3, #o3, #b11)") 8)
我正在尝试从命令行使用 Swank 服务器(没有特定的生产目的,只是想了解一些内容以备后用),但我不知道我可以输入什么来自 telnet
会话以获得任何可用的答案;例如,我如何评估 (+ 1 1)
?
一个
It is indeed possible to communicate with a swank server if you familiarize yourself with the swank protocol, which seems to be underdocumented (see e. g. here: https://github.com/astine/swank-client/blob/master/swank-description.markdown). However, this exposes a TCP socket over a network, which could be unsafe. Once I tried that, too, but I was not satisfied with the IPC speed.
和link其实给出了一些提示,可惜没有例子。我无法得到任何结果。
这是我试过的;使用
单独启动服务器后(swank:create-server :port 4005 :dont-close t :style NIL)
我试过类似的东西:
~ $ telnet localhost:4005
00001e(swank:listener-eval (+ 1 2))
并收到以下错误消息:
" "Reader error in file #<string-input stream from \"(swan...\" 0x6045ce0640>, position 20:
Cannot find the external symbol LISTENER-EVAL in #<\"SWANK\" package>.")Connection closed by foreign host
在这种情况下,我应该输入的字符串是什么?
我成功完成了这项工作:
00003e(:emacs-rex (swank:interactive-eval "(+ 1 2)") "cl-user" t 8)
注意第一个是 :emacs-rex
关键字,以及要评估的形式是如何在字符串中的。 8 在这里只是一个任意值。回复首先以00A1C8(:indentation-update ...)
开头,后面是:
000031(:return (:ok "=> 3 (2 bits, #x3, #o3, #b11)") 8)