Details of Qnet data communication

Updated: May 06, 2022

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:
Message passing in the same machine

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.
Message passing in two different machines