Hi Bernard,
Just out of curiosity, why do you use the same ip subnet for all your interfaces?
I suspect the only way to get this to work properly is through some special configuration of your OS (to let it know that PC-A needs to use nicA1 to reach nicB1's IP and nicA2 to reach nicB2's IP); with two separate ip subnets, the default routing would just work -- sounds simpler and more robust.
All my interfaces use the same ip subnet because I need all possible ways I can achieve with this hardware configuration. What I want is to send the same request twice, making use of different ways:
Code:
nicA1 ----+-----> nicB1
|
+-----> nicB2
+-----> nicB1
|
nicA2 ----+-----> nicB2
For example:
If all interfaces are up: nicA1 -> nicB1
nicA2 -> nicB2
If nicA2 is down: nicA1 -> nicB1
nicA1 -> nicB2
If nicB1 is down: nicA1 -> nicB2
nicA2 -> nicB2
etc...
To accomplish that think I need all interfaces in the same ip subnet, be able to bind the local socket (in the client side) to the ip I want and don't let the OS make the routing.
In any case, for your prototype, I recommend you stay at the "application level" rather write a new transport plugin.
Yes, after study hard the Ice sources (proxy, delegate, outgoing, connection, transceiver) and the comments from Marc, I realise that the transport plugin isn't a good idea. I think as well stay at the "application level" is the best approach.
Thanks for your comments and best regards,
Mario