对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]
我做错了什么?
答案 0 :(得分:2)
您可以试用IOLib,其make-socket
函数似乎支持:reuse-address
关键字。据我所知,IOLib没有使用Lisp实现的内置网络功能,所以即使没有SBCL直接支持该功能,它也可以工作。
我还没有测试过它。
答案 1 :(得分:1)
请参阅sbcl-help上的this thread。