aboutsummaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorLoic Guegan <manzerberdes@gmx.com>2019-05-12 10:14:28 +0200
committerLoic Guegan <manzerberdes@gmx.com>2019-05-12 10:53:33 +0200
commitbbd9151d7fa3500582c62474da2ce39ea151a63c (patch)
tree98454b2d09049befb5d41503af282bbb1a5509b6 /server
parent9de3c7586dc97209aef5b436d0c5e7657f711c72 (diff)
Switch to udp
Diffstat (limited to 'server')
-rw-r--r--server/remote-snake-server.asd2
-rw-r--r--server/server.lisp26
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))