#!/usr/bin/env chibi-scheme (import (scheme base) (scheme write) (chibi net) (chibi net server)) ;; Copy each input line to output. (define (echo-handler in out sock addr) (let ((line (read-line in))) (cond ((not (or (eof-object? line) (equal? line ""))) ;; log the request to stdout (display "read: ") (write line) (display " from ") (display (sockaddr-name (address-info-address addr))) (display " port ") (write (sockaddr-port (address-info-address addr))) (newline) ;; write and flush the response (display line out) (newline out) (flush-output-port out) (echo-handler in out sock addr))))) (define (get-inet6-address-info host service) (let ((hints (make-address-info address-family/inet6 socket-type/stream ip-proto/tcp))) (get-address-info host service hints))) ;; Start the server on local ipv6 addresses on port 5556. (run-net-server (get-inet6-address-info #f 5556) echo-handler)