summaryrefslogtreecommitdiff
path: root/src/main.lisp
blob: ccebc55c1c77786abe277dc69462fd411a5ecb50 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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)))