SLIME和SWANK入门:Lisp连接意外关闭:远程对等方断开连接。

10

我想使用slime-connect函数来使用sbcl远程连接服务器。我按照Marco Baringer的slime.mov教程中的所有步骤操作,但在为slime创建ssh连接时遇到了问题。在远程机器上启动swank server之后,我尝试这样做:

ssh -L 4005:127.0.0.1:4005 user@server.com

但是我在本地SLIME中遇到了以下错误:

Lisp连接意外关闭:远程对等方断开连接

...并且在远程服务器上也出现了以下错误:

通道3:打开失败:连接失败:连接被拒绝

可能出了什么问题呢?


感谢大家的回答,但是 slime-connect 对我来说无法工作,所以我暂时搁置了这个问题,并在服务器上安装了 Emacs,因此我只在那里使用 SLIME。但是,由于课程已经开始,我目前没有进行任何 Common Lisp 开发。 - wallyqs
4个回答

4
你确定你正在使用相同版本的SLIME和SWANK吗?当我在一个SLIME会话中使用不匹配的这两个半部分时,奇怪的事情就会发生。

2
我不确定,但你可以尝试在本地连接远程机器上的Swank。
ssh user@server.com
telnet 127.0.0.1:4005

可能你会发现错误。另外,你可以尝试使用localhost:4005代替127.0.0.1并检查本地接口是否已正确配置。


2

最容易被忽略的是swank服务器监听的tcp端口。我最近没有进行过很多远程开发,但我记得第一次尝试时,我有点困惑如何告诉swank绑定哪个端口,或者找出它选择了哪个端口。

你介意详细说明一下如何启动swank服务器吗?


0

对于我来说,问题在于Emacs的slime(v2.22)函数始于附加参数from-emacs t,而swank-loader.lisp(v2.22)不支持该参数。

我所做的是编辑slime-v2.22/swank-loader.lisp:init以接受一个新参数from-emacs,在函数体中没有使用该参数,因为我不知道应该如何处理。但是,slime现在可以正常启动和工作了。

同时,在启动slime时,我收到了关于不兼容版本的警告:slime v2.23和swank v2.22,但是我通过list-packages和文件夹名称检查,我的slimeswank都是v2.22版本,这让我很困惑。

如果有人了解详情,请留言。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接