(define-module (shared)) (use-modules (rnrs io ports)) (define-public (recv port) (let next ((out '())) (if (char-ready? port) (let ((byte (get-u8 port))) (if (eof-object? byte) (reverse out) (next (cons byte out)))) (reverse out)))) (define make-socket socket) (define-public (make-client-socket port) (let ((socket (make-socket PF_INET SOCK_STREAM 0))) (connect socket AF_INET INADDR_LOOPBACK port) socket)) (define-public (make-server-socket port) (let ((socket (make-socket PF_INET SOCK_STREAM 0))) (bind socket (make-socket-address AF_INET INADDR_ANY port)) (listen socket 128) socket))