mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-18 21:29:19 +02:00
29 lines
1 KiB
Scheme
29 lines
1 KiB
Scheme
#!/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)
|