Hello Mark, On Tue, Apr 28, 2009 at 8:34 AM, Matt Birkholz <m...@birkholz.chandler.az.us> wrote: >> From: Taylor R Campbell <campb...@mumble.net> >> Date: Mon, 27 Apr 2009 19:41:34 -0400 >> >> [...] >> >> Nevertheless, as you suggest, it is good practice to close the >> socket explicitly. > > So something like this would be more in order: > > (define (start-server service) > (let ((server-sock (open-tcp-server-socket service))) > (display "Server ready to accept connections.")(newline) > (let* ((port (tcp-server-connection-accept server-sock #t #f)) > (from-client (read-line port))) > (display from-client port)(newline port) > (display from-client)(newline) > (close-port port)) > (close-tcp-server-socket server-sock))) > > The above procedure echoes the line to the client AND the console. >
Thanks. This works: <code> ;;;server.scm ;;; (define (start-server service) (let ((server-sock (open-tcp-server-socket service))) (display "Server ready to accept connections..") (newline) (wait-for-connection server-sock) (close-tcp-server-socket server-sock) )) (define (wait-for-connection server-sock) (let* ((port (tcp-server-connection-accept server-sock #t #f)) (from-client (read-line port))) (display from-client port) (newline port) (display from-client) (newline) ; (close-port port) ) (wait-for-connection server-sock) ) </code> The tail call is to keep the server alive to accept more than one connection. I intend to make this a multi-threaded server. As of now, it echoes only the first message for each new connection. The subsequent messages are not echoed back or displayed. I am guessing, this is because the 'port' is re-bound everytime a new connection is established. 'telnet' works perfectly fine with the above server. However, the following 'client.scm' file connects to the server, but no data is transferred back and forth: <code> ;;;client.scm (define (start-client service) (let* ((remotesocket (open-tcp-stream-socket "localhost" service))) (display "From " remotesocket) (newline remotesocket) (close-port remotesocket)) ) </code> What is going wrong? Thank You once again. Best, Amit -- http://amitksaha.blogspot.com http://amitsaha.in.googlepages.com/ *Bangalore Open Java Users Group*:http:www.bojug.in "Recursion is the basic iteration mechanism in Scheme" --- http://c2.com/cgi/wiki?TailRecursion _______________________________________________ MIT-Scheme-users mailing list MIT-Scheme-users@gnu.org http://lists.gnu.org/mailman/listinfo/mit-scheme-users