
Don G wrote:
This doesn't make any of these streams networks, and neither is a communication port a network.
I won't debate semantics here (too much<g>): Once the line is up, communications between A and B occur in exactly the same way as they would with TCP/IP. Both ends "listen" for incoming stream connections on multiple ports (each for a different "service"), each can accept one or more datagrams on different ports, again for different services. In a nutshell, they are abstractly identical. The big difference is that the entire network consists of two hosts.
Yes, I see. I was thinking of a different scenario, however, one in which you communicate with a device over a serial line (not with another host) using a specified protocol. Since serial lines are relatively slow, asynchronous communication is a good thing.
This of course leads to the obvious question: which network gives me a stream over COM1?
network_ptr com1 = new net_over_stream( new stream_over_serial("com1"));
Wait a minute. Which network creates the stream_over_serial? Assume that I don't need the outer network since I'll be communicating with a printer, for example.
LPT1?
network_ptr lpt1 = new net_over_stream( new stream_over_lpt("lpt1"));
Same question. :-)
Your addresses are network-dependent and cannot be used outside of the context of their network. They may look like URIs, but they are not.
Please see previous point.
Why is this universal: "http://www.boost.com"? It is only universal in the sense that it represents a host on the Internet. That fact must be inferred from "http" as in "oh, http is an Internet thing, and the rest is "user:pswd@host:port/path?query because that's what we all agree on". Which simply means a common lexicon of schemes and their interpretation. Again, unless I am missing something.
My point was that different network objects can interpret the same address to mean different things, at least in theory. URIs are supposed to be context-independent.