Exchanging data with the DataHub program is done through a client-server mechanism, where the client requests a service, and the server provides the service. Depending on the programs it interacts with, a DataHub instance is capable of acting as a client, as a server, or as both simultaneously.
The client-server relationship itself does not determine the direction of data flow. For example, a client may read data from the server, or it might write data to the server. The data can flow either way; the client might initiate a read or a write, and the server would respond.