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を試すことができます。私が思い出す限り、IOLib は Lisp 実装の組み込みネットワーク機能を利用していないため、SBCL がこの機能を直接サポートしていなくても機能する可能性があります。make-socket:reuse-address

しかし、私はそれをテストしていません。

于 2011-07-06T17:12:41.410 に答える
1

sbcl-help でこのスレッドを参照してください。

于 2011-06-11T16:30:48.117 に答える