On 2009-10-13, at 8:00 PM, lowly coder wrote:
Sorry for dumb question --
I have a tcp port. I'm starting a thread. How can I redirect all input/output from/to the thread to this tcp port?
somethign like
(let ((p (pre existing code that makes bidirectional port)) .. modify the following ... (thread-start! (make-thread func)))
Here are three ways to do this.
Marc
(define (server1) (tcp-service-register! 11111 (lambda () (display "Hello\n"))))
(define (server2) (let ((s (open-tcp-server 22222))) (let loop () (let ((connection (read s))) (thread-start! (make-root-thread (lambda () (display "World\n") ;; will go to "connection" (close-input-port (current-input-port)) (close-output-port (current-output-port))) 'hello (thread-thread-group (current-thread)) connection connection))) (loop))))
(define (server3) (let ((s (open-tcp-server 33333))) (let loop () (let ((connection (read s))) (parameterize ((current-input-port connection) (current-output-port connection)) (thread-start! (make-thread (lambda () (display "Bonjour\n") ;; will go to "connection" (close-input-port (current-input-port)) (close-output-port (current-output-port))) 'hello)))) (loop))))
(server1) (thread-start! (make-thread server2)) (server3)