diff options
Diffstat (limited to 'server')
| -rw-r--r-- | server/remote-snake-server.asd | 2 | ||||
| -rw-r--r-- | server/server.lisp | 26 |
2 files changed, 9 insertions, 19 deletions
diff --git a/server/remote-snake-server.asd b/server/remote-snake-server.asd index 598f270..1a168f2 100644 --- a/server/remote-snake-server.asd +++ b/server/remote-snake-server.asd @@ -3,7 +3,7 @@ :description "Remote Snake Server." :version "0.0.1" :author "Loic Guegan" - :depends-on ( "usocket" "jonathan" "cl-strings" ) + :depends-on ( "usocket-server" "jonathan" "cl-strings" ) :components ((:file "packages") (:module "game" :depends-on ("packages") diff --git a/server/server.lisp b/server/server.lisp index f1417c5..3676121 100644 --- a/server/server.lisp +++ b/server/server.lisp @@ -7,23 +7,13 @@ :element-type '(unsigned-byte 8) :initial-element 0)) -(defun handle-client (client-socket) - (unwind-protect ; To be sure to close the client socket - (let* ((request (read-line (usocket:socket-stream client-socket)))) - (loop while (eq (search "#EOF" request) nil) do - (setf request (concatenate 'string request (read-line (usocket:socket-stream client-socket) nil nil)))) - (setf request (cl-strings:replace-all request "#EOF" "")) - (format (usocket:socket-stream client-socket) (handle-request *server-api* request)) - (force-output (usocket:socket-stream client-socket))) - (usocket:socket-close client-socket))) - +(defun handle-client (buffer) ; echo + (declare (type (simple-array (unsigned-byte 8) *) buffer)) ; Seems to be to tell lisp which type is buffer + (let ((request (babel:octets-to-string buffer))) + (format t "Receive client request: ~a" request) + (babel:string-to-octets + (handle-request *server-api* request)))) ;;; The server :D -(defun start (interface port) - (format t "Server started!~%") - (let ((socket (usocket:socket-listen interface port))) - (unwind-protect ; To be sure to close server socket - (loop - (handle-client (usocket:socket-accept socket :element-type 'character))) - (usocket:socket-close socket)))) - +(defun start (host port) + (usocket:socket-server host port #'handle-client nil :in-new-thread nil :protocol :datagram)) |
