3

调用sockopt-reuse-address似乎没有效果。

(setf socket (make-instance 'sb-bsd-sockets:inet-socket 
                            :type type :protocol protocol)
(setf (sb-bsd-sockets:sockopt-reuse-address socket) t)
(setf (sb-bsd-sockets:non-blocking-mode socket) t)
(sb-bsd-sockets:socket-bind socket ip port)
(sb-bsd-sockets:socket-listen socket backlog)

尝试重新绑定到同一端口会引发以下错误:

Socket error in "bind": EADDRINUSE (Address already in use)
   [Condition of type SB-BSD-SOCKETS:ADDRESS-IN-USE-ERROR]

我究竟做错了什么?

4

2 回答 2

2

您可以尝试IOLib,其make-socket功能似乎支持:reuse-address关键字。据我记得,IOLib 没有利用 Lisp 实现的内置网络功能,因此即使没有 SBCL 直接支持该功能,它也可能工作。

不过,我还没有测试过。

于 2011-07-06T17:12:41.410 回答
1

请参阅sbcl-help 中的此线程

于 2011-06-11T16:30:48.117 回答