(defparameter *address* #(0 0 0 0)) (defparameter *port* 7777) (defun read-from-connection (connection) "Read data from a connection." (multiple-value-bind (buffer length) (sb-bsd-sockets:socket-receive connection nil 1024) (vprint buffer length) (let (data) (if (and length (> length 0)) (subseq buffer 0 length) data)))) (defun handle-connection (connection) "Handle an incoming connection." (let ((data (read-from-connection connection))) (vprint data 123) (sb-bsd-sockets:socket-send connection "Hello Baby" nil) ;; (sb-bsd-sockets:socket-close connection) )) (defun start-server (&optional (port *port*) (address *address*)) (let ((server (make-instance 'sb-bsd-sockets:inet-socket :type :stream :protocol :tcp))) (setf (sb-bsd-sockets:sockopt-reuse-address server) t) (setf (sb-bsd-sockets:non-blocking-mode server) t) (sb-bsd-sockets:socket-bind server address port) (sb-bsd-sockets:socket-listen server 10) (loop (let ((connection (sb-bsd-sockets:socket-accept server))) (when connection (handle-connection connection)))))) ;; (start-server)