From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <158688033fe375ed6e935e472986d876@quanstro.net> From: erik quanstrom Date: Sat, 18 Jul 2009 06:25:19 -0400 To: 9fans@9fans.net In-Reply-To: <20090718074338.1A91D5B18@mail.bitblocks.com> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Subject: Re: [9fans] channels across machines Topicbox-Message-UUID: 25966204-ead5-11e9-9d60-3106f5b1d025 On Sat Jul 18 03:46:01 EDT 2009, bakul+plan9@bitblocks.com wrote: > Has anyone extended the idea of channels where the > sender/receiver are on different machines (or at least in > different processes)? A netcat equivalent for channels! i think the general idea is that if you want to do this between arbitrary machines, you provide a 9p interface. you can think of 9p as a channel with a predefined set of messages. acme does this. kernel devices do this. however inferno provides file2chan http://www.vitanuova.com/inferno/man/2/sys-file2chan.html. of course, somebody has to provide the 9p interface, even if that's just posting a fd to /srv. if you wanted to do something like file2chan in plan 9 and c, you're going to have to marshal your data. this means that chanconnect as specified is impossible. (acme avoids this by using text only. the kernel devices keep this under control by using a defined byte order and very few binary interfaces.) i don't know how you would solve the naming problems e.g. acme would have using dial-string addressing (i assume that's what you ment; host-port addressing is ip specific.). what would be the port-numbering huristic for allowing multiple acmes on the same cpu server? after whittling away problem cases, i think one is left with pipes, and it seems pretty clear how to connect things so that chan <-> pipe <-> chan. one could generalize to multiple machines by using tools like cpu(1). - erik