我添加了以下功能来自动发现 Intranet 中的 WCF 服务。
private void AutoDiscovery(FindCriteria cirteria)
{
try
{
UdpDiscoveryEndpoint udp = new UdpDiscoveryEndpoint();
using (DiscoveryClient discoveryClient = new DiscoveryClient(udp))
{
cirteria.Duration = TimeSpan.FromSeconds(5);
FindResponse response = discoveryClient.Find(cirteria);
if (response.Endpoints.Count > 0)
{
foreach (EndpointDiscoveryMetadata point in response.Endpoints)
{
string address = point.Address.Uri.ToString();
// net.tcp//computer1:8081/wcfService
}
}
}
}
catch(Exception e)
{
}
}
测试时,返回地址为net.tcp//computer1:8081/wcfService
。虽然我可以Dns.GetHostAddress
用来获取 ip 地址,但由于 DNS 问题,在本地 Intranet 中需要很长时间。
无论如何在发现期间直接获取IP地址吗?