Hi,
The simplest and most efficient way to do it is to provide C with a proxy for I and let it communicate directly with server A. This is the strategy I would recommend, assuming there are no network restrictions that would prevent C from communicating with A.
If C is unable to establish a connection to A, then one solution is to have B forward requests on behalf of C. You can do this efficiently with the Blobject interface, and I wrote a newsletter article on this subject in
issue #11.
Hope that helps,
- Mark