C# 使用网络搜索服务器的WCF发现。tcp://0.0.0.0:8888 住址

C# 使用网络搜索服务器的WCF发现。tcp://0.0.0.0:8888 住址,c#,wcf,C#,Wcf,我正试图在WCF发现协议的帮助下找到我的服务器。 当我为服务器指定显式地址时,一切都很好,例如:net。tcp://192.168.36.18:8888. 但当我指定net时。tcp://0.0.0.0:8888 服务器上的地址,用于侦听我接收到的所有网络接口。tcp://0.0.0.0:8888 在客户机上。当然,我无法使用此地址连接到服务器。 wcf发现请求的物理响应来自实际服务器地址:192.168.36.100、192.168.36.239和192.168.36.61。我可以通过Wire

我正试图在WCF发现协议的帮助下找到我的服务器。 当我为服务器指定显式地址时,一切都很好,例如:net。tcp://192.168.36.18:8888. 但当我指定net时。tcp://0.0.0.0:8888 服务器上的地址,用于侦听我接收到的所有网络接口。tcp://0.0.0.0:8888 在客户机上。当然,我无法使用此地址连接到服务器。 wcf发现请求的物理响应来自实际服务器地址:192.168.36.100、192.168.36.239和192.168.36.61。我可以通过Wireshark看到它。但是我不能从FindResponse班上得到这些地址

如果服务器被配置为通过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>
服务器上的配置:

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>

对于任何想找到这个问题答案的人,你可以看看,这是我发布的另一个SO问题的答案。Alex,谢谢!那真的很有帮助!我以为stackoverflow上没有人能回答这个问题。是的,这很难。我花了好几天的研究才想出那个解决办法。我决心把它弄明白。我很高兴我的解决方案很有帮助。