Thank you for sharing experiences on what worked and what did not. Much appreciated!
As I’m now too much on a tangent of what might have been versus what once was, I’ll follow
up with a PM.
On 4 Jul 2022, at 23:17, ron minnich
<rminnich(a)gmail.com> wrote:
Something like what you mention: open(“/net/inet/any:80”, O_RDWR |
O_STREAM | O_CREAT, 0600), is actually to be found in an RFC from
around that time.
You can do that, but the 1980s tried it and it did not end well.
What's it mean, for example, when you rename("/net/harv") to
("/net/google") -- close and reopen socket? (there's a Lost Talk from,
I think, Rob, that addressed this very question)
While it has its flaws,
https://9p.io/sys/doc/net/net.html in my view
is the best example to date of how to get it right. Addresses are
strings, just like paths -- well, they *are* paths in fact. Some of
this path-like nature can be seen in the Go net package today.
Oh, and, as regards how the synthetic file system looks: you never,
never, ever, put an address in the pathname. That's important.
Also consider that if you get it right, you can do all the network IO
you want with cat and echo -- people have written telnet in Plan 9
with those two commands. And, if you get it wrong, well -- you get
socat.