summaryrefslogtreecommitdiff
path: root/src/main.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.lisp')
-rw-r--r--src/main.lisp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/main.lisp b/src/main.lisp
new file mode 100644
index 0000000..ccebc55
--- /dev/null
+++ b/src/main.lisp
@@ -0,0 +1,20 @@
+(defun make-server ()
+ (let ((socket (make-instance 'sb-bsd-sockets:inet-socket
+ :type :stream :protocol :tcp)))
+ (sb-bsd-sockets:socket-bind socket #(127 0 0 1) 8080)
+ (sb-bsd-sockets:socket-listen socket 5)
+ socket))
+
+(defparameter *endl* (format nil "~c~c" #\Return #\Newline))
+(defparameter *message*
+ (format nil "~{~A~}" (list "HTTP/1.1 200 Ok" *endl*
+ (format nil "Content-Length: ~a" (length "hello there"))
+ *endl* *endl*
+ "hello there" *endl*)))
+
+(defun handler (server)
+ (let ((socket (sb-bsd-sockets:socket-accept server))
+ (buf (make-array 1028 :element-type 'character)))
+ (sb-bsd-sockets:socket-receive socket buf nil)
+ (write-sequence buf *standard-output*)
+ (sb-bsd-sockets:socket-send socket *message* nil)))