sometimes this reader is stuck until another thread hits thread-wait-for-i/o again pasted by C-Keen on Sun Jul 17 16:21:50 2011
(define reader
(make-thread
(lambda ()
(let loop ()
(thread-wait-for-i/o! (port->fileno i))
(while (and (char-ready? i) (not (eof-object? (peek-char i))))
(printf "~a" (read-char i))
(flush-output))
(loop)))))
full example added by C-Keen on Sun Jul 17 17:40:04 2011
(use parley miscmacros srfi-18 tcp) (define-values (i o) (tcp-connect "ifmud.port4000.com" 4000)) (define reader (make-thread (lambda () (let loop () (thread-wait-for-i/o! (port->fileno i)) (while (and (char-ready? i) (not (eof-object? (peek-char i)))) (printf "~a" (read-char i)) (flush-output)) (loop))))) (thread-start! reader) (let loop () (let ((c (parley ""))) (fprintf o "~a~%" c) (flush-output o) (if (equal? c "quit") (begin (close-input-port i) (close-output-port o) (exit 0)) (loop))))