As mentioned before, Qnet relies on the message passing paradigm of QNX Neutrino.
Before any message pass, however, the application (i.e., the client) must establish a connection to the server using the low-level ConnectAttach() function call:
ConnectAttach(nd, pid, chid, index, flags);
In the above call, nd is the node descriptor that specifies
which node you're connecting to.
The node descriptor tells the kernel whether you're communicating to a local or
remote server process.
If nd is
zero, you're specifying a local server process, and you'll get local message passing
from the client to the server, carried out by the local kernel as shown below:
When you specify a nonzero value for nd, the application
transparently passes messages to a server on another machine, and connects
to a server on another machine. This way, Qnet
not only builds a network of trusted machines, it lets all these machines
share their resources with little overhead.