- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
IOLib 允许创建一个被动套接字来监听客户端的连接,在调用 listen 之前,我们需要调用 (bind-address) 将套接字绑定(bind)到指定的地址/端口。
嗯,问题是我第一次把socket绑定(bind)到一个端口,运行的很好,然后在slime中用C-c C-c结束线程,再次运行程序,这次抛出了EADDRINUSE的异常:
<SOCKET-ADDRESS-IN-USE-ERROR 98 :EADDRINUSE "address already in use", FD: 10>
我已经像这样将 reuse_addr 选项设置为绑定(bind)地址:
(bind-address socket
+ipv4-unspecified+
:port 1080
:reuse-addr t)
但我不认为这是问题所在,因为当我在 C 中做同样的事情时,我使用 Ctrl+C 终止进程,我可以重新绑定(bind)端口,但在 slime 中,唯一的解决办法是重新启动emacs,真的不方便,请问如何解决这个问题,谢谢。
最佳答案
当您退出进程时,所有打开的文件描述符(包括网络套接字)都会关闭,这就是它似乎在 C 中工作但在 CL 中不工作的原因。但是,当线程终止时,这不会发生。您会发现在 SLIME 中使用 restart-inferior-lisp 命令可以获得所需的行为。
然而,并不是所有的东西都丢失了。如果以 UNWIND-PROTECT 形式将函数包装在线程中,则可以安排在函数退出时关闭套接字。
关于lisp - IOLib 的被动套接字抛出 EADDRINUSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8655840/
我是common lisp新手,在用iolib写server的时候,发现telnet到server,然后断开telnet,server throw 未知类型说明符:挂断 当我打印 backtrace
IOLib 允许创建一个被动套接字来监听客户端的连接,在调用 listen 之前,我们需要调用 (bind-address) 将套接字绑定(bind)到指定的地址/端口。 嗯,问题是我第一次把sock
据我了解,IOLib和 usocket具有几乎相同的抽象级别。 IOLib 使用操作系统后端套接字,另一方面 usocket 使用 Lisp 运行时后端套接字。 我只是想知道对于特定用例哪个是更好的选
我将 IOLIB 与此代码一起使用来解析主机名: (sockets:address-to-string (sockets:lookup-hostname name)) 我工作了,但是这些函数没有任何超
我是一名优秀的程序员,十分优秀!