По сути, вы могли бы создать две конечные точки на стороне клиента - по одной для каждого IP-адреса, к которому вы хотите подключиться, и затем выбрать тот, который вы хотите в своем коде.
Ваш клиент app.config
будетВыглядите примерно так:
<client>
<endpoint name="tcpLocal"
address="net.tcp://localhost:9292/EmbeddedService"
binding="netTcpBinding"
bindingConfiguration="TCPEndPoint"
contract="ServiceReference1.IEmbeddedService" />
<endpoint name="tcpRemote"
address="net.tcp://192.168.10.42:9292/EmbeddedService"
binding="netTcpBinding"
bindingConfiguration="TCPEndPoint"
contract="ServiceReference1.IEmbeddedService" />
</client>
, а затем в вашем коде, основываясь на некоторых критериях, вам придется использовать либо определение tcpLocal
, либо tcpRemote
клиентской конечной точки:
// connect to the local address
channelFactoryLocal = new ChannelFactory<IEmbeddedService>("tcpLocal");
// or connect to the remote address
channelFactoryRemote = new ChannelFactory<IEmbeddedService>("tcpRemote");
Эти строки в конце обозначают name=
для определения <client>/<endpoint>
для использования в каждом случае.Вы можете выбрать локальное или удаленное соединение - или, черт возьми, даже иметь оба доступных одновременно, если хотите!: -)