C++/Java full-duplex communication

Hello,
here's my situation: I have a C++ server running on a well known machine and a number of Java clients running on other machines (assumed as unknown) on the same LAN. What I want to achieve is full duplex communication between those applications, in order to exchange complex objects and data (the client initiates communication and then the server can communicate freely by sending messages asynchronously without the need for other requests from the client). I would like to use some standard, widely used protocol instead of simple sockets, so as to promote easy extendability of the system (the first version will have only a server and a client, but subsequent versions could include other components as well, mainly in Java, but could be any language).
I've googled a little but found nothing that fits, I was interested by SOAP and similar protocols, but it seems to me that it is only one-way. I've also seen that someone (eg. Silverlight) is achieving full-duplex for SOAP by implementing a polling mechanism but I don't like this approach.
What should I use?

Thanks a lot,
Gabriele Genta

Have a look at Advanced Message Queuing Protocol and it's derivatives.

Perfect! :smiley: Great suggestion. I found Apache ActiveMQ (which supports AMQP) that seems to fit my problem!

Thanks a lot,
Gabriele Genta

Here is a good introductory article on AMQP from Linux Journal which you should read.