[usocket-devel] socket-listen issue

Mikhail Shevchuk mikhail.shevchuk at gmail.com
Sat May 5 15:43:08 UTC 2007


Hi

I have a small server that uses usocket as a socket library and sbcl
as a compiler:

(defun server ()
  (let ((sock (usocket:socket-listen "88.204.87.138" 3690 :backlog 4)))
    (loop
       (let ((csock (usocket:socket-accept sock)))
	 (let ((cstream (usocket:socket-stream csock)))
	 (when cstream
	   (loop for line = (read-line cstream nil)
	      while line do (progn
			     (format t "XMPP: ~A~%" line)
			     (cl-irc:privmsg *irc-connection* "#abcd" line))))
	   (close cstream))))))

After terminating the thread and reevaluating the function, I get the
following error:

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

I also tried to use :reuseaddress t, but that doesn't help. What is
the correct way to stop such server and thread?

P.S. One more thing, are there any examples of how can I build
multi-thread server using usocket for serving bunch of clients?

-- 
Mikhail



More information about the usocket-devel mailing list