;; -*- 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)