diff options
Diffstat (limited to 'server/server.lisp')
| -rw-r--r-- | server/server.lisp | 26 |
1 files changed, 8 insertions, 18 deletions
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)) |
