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!
Actual plumbing seems easy: one can add a `proxy' thread in
each process to send a message via whatever inter process
mechanism is available. One issue would be for the two sides
to identify a specific channel. I imagine something like the
following would work.
// on the client:
chan = chanconnect("<host>:<port>", elemsize, nelem);
// on the server:
x = chanbind("<port>", elemsize, nelem);
chan = chanaccept(x); // to allow multiple connections
Or one can build this on top of a socket or file descriptor.
Another issue is endianness (unless all processors are the
same type). Yet another issue is sending variable size
things. In a single address space you can pass a pointer +
may be a size but that trick doesn't work across process (or
machine boundaries) -- so pretty much have to add some
marshalling/unmarshalling that knows about types.
Or is there a better idea? This certainly seems preferable
to RPC or plain byte pipes for communicating structured
values.
Thanks!
--bakul