Details of Qnet data communication

As mentioned before, Qnet relies on the message passing paradigm of QNX Neutrino.

Before any message pass, however, the application (e.g., 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.