Subject: Re: Whats the point
From: (Rob Warnock)
Date: 2000/07/08
Newsgroups: comp.lang.scheme
Message-ID: <8k6i37$2vn2g$>
<> wrote:
| People may use the telnet program to connect to servers like this, but
| that doesn't mean the telnet protocol is used.  The telnet program does
| not try to do option negotiation, etc. unless connecting to the default
| telnet port.  For other ports, it's just a TCP connection that you can
| type to and see what comes back.

Actually, I think the actual rule is that it doesn't try to do option
negotiation, etc. unless the connected-to port *sends* at least one
Telnet command first. You can in fact do the full Telnet protocol with
ports other than the default telnet port...

| I'm sure most Scheme implementations have some way to get a TCP
| connection in the form of an input port and an output port.

Yup. Almost all of them. Here's a (overly-simple, possibly buggy)
example in MzScheme:

	% cat mzd
	#!/usr/local/bin/mzscheme -r
	(require-library "")
	(define (print* . x) (for-each display x) (newline))
	(define tcp-server-port 3456)

	(let ((server (tcp-listen tcp-server-port 1)))
	  (print* "[Listening on port " tcp-server-port "]") 
	  (let-values (((ip op) (tcp-accept server)))
	    (print* "[Connection accepted]")
	    (parameterize ((current-output-port op) 
			   (current-error-port op)
			   (current-input-port ip))
	      (print* "MzScheme listener -- type '(exit)' to quit")
	% ./mzdaemon
	[Listening on port 3456]
	[Connection accepted]

and in another window:

	% telnet localhost 3456
	Connected to localhost.
	Escape character is '^]'.
	MzScheme listener -- type '(exit)' to quit
	> (+ 1 2 3)
	> (exit)
	Connection closed by foreign host.

Obviously, for any app that wanted to be able to do something useful
at the same time that it was running the listener, you'd need to put
the above inside a thread [which MzScheme supports] or something...


Rob Warnock, 41L-955
Applied Networking
Silicon Graphics, Inc.		Phone: 650-933-1673
1600 Amphitheatre Pkwy.		PP-ASEL-IA
Mountain View, CA  94043