;; -*- Mode: Irken -*-
(include "doom/doom.scm")
(define (serve ip port)
(let ((fd (socket AF_INET SOCK_STREAM 0))
(addr (make-in-addr ip port)))
(bind fd addr)
(listen fd 5)
(print-string "starting server...\n")
(let loop ((cfd (accept fd)))
(poller/fork (lambda () (client cfd)))
(loop (accept fd)))))
(define (client fd)
(print-string "client starting\n")
(let loop ((s (recv fd 512)))
(when (> (string-length s) 0)
(send fd s)
(loop (recv fd 512))))
(print-string "exiting client...\n")
(close fd)
)
(serve "0.0.0.0" 9999)
(poller/wait-and-schedule)