I feel that for talking between different processes you will need to use CORBA(Common Object Request Broker Architecture). Atleast that's how we do it here, there might be other methods though. So basically what happens is, your servers register with the broker. Client request for the server object from broker. Once the broker returns the server object, the client then makes direct contact with the server. You will have to write CORBA classes for this, stubs and skeletons.