使用net.tcp://0.0.0.0:8888地址搜索服务器的WCF发现

时间:2014-09-23 09:45:38

标签: c# wcf

我试图在WCF发现协议的帮助下找到我的服务器。 当我为服务器指定显式地址时,一切都很好,例如:net.tcp://192.168.36.18:8888. 但是当我在服务器上指定net.tcp://0.0.0.0:8888地址来监听我在客户端上收到net.tcp://0.0.0.0:8888的所有接口时。当然,我不能使用这个地址连接到服务器。 对wcf发现请求的物理响应来自真实服务器地址:192.168.36.100, 192.168.36.239192.168.36.61。我可以通过Wireshark看到它。但我无法从FindResponce class获得此地址。

如果服务器配置为通过WCF发现侦听所有接口,是否有办法获取物理地址?

客户端代码:

var discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint());
var findResponce = discoveryClient.Find(new FindCriteria(typeof(IRadioService)));
discoveryClient.Close();

服务器上的代码:

var serviceHost = new ServiceHost(new RadioServer());
serviceHost.Open();

在服务器上配置:

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="RadioServer">
          <serviceDiscovery />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="RadioServer" name="Server.RadioServer">
        <endpoint address="RS" binding="netTcpBinding" contract="Common.IRadioService" />       
        <endpoint name="udpDiscovery" kind="udpDiscoveryEndpoint" />
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://0.0.0.0:8888/" />
          </baseAddresses>
        </host>
      </service>
    </services>
  </system.serviceModel>

0 个答案:

没有答案