我怎样才能得到所有连接到我的应用程序(C#NET控制台应用程序)正在运行的计算机的IP地址? 我需要一个WCF服务绑定到主IP地址,并返回完整的IP地址列表的列表。
using System.Net;
string myHostName = Dns.GetHostName().ToString();
string ipAddress = Dns.Resolve(HostName).AddressList[0].ToString();
这是我在用的,现在让主IP地址,但我无法弄清楚如何获得休息归还。
如果我绑定一个WCF服务为localhost:8000,将暴露它的主?
我认为这个例子应该可以帮助您。
// Get host name
String strHostName = Dns.GetHostName();
// Find host by name
IPHostEntry iphostentry = Dns.GetHostByName(strHostName);
// Enumerate IP addresses
foreach(IPAddress ipaddress in iphostentry.AddressList)
{
....
}
编辑:
“有没有这样的事,作为一个‘主’IP地址。
路由表确定哪个朝外的IP地址被根据目的地IP地址中使用的“(并且通过扩展,网络接口,其本身可以是虚拟或物理)。
该DNS变种工作在网络上,但一个DNS条目可以有多个IP地址,一个IP地址,可以有多个DNS条目。 更重要的是,一个地址不需要被绑定到DNS条目都没有。
对于本地机器试试这个: -
foreach (NetworkInterface netInterface in NetworkInterface.GetAllNetworkInterfaces())
{
Console.WriteLine("Name: " + netInterface.Name);
Console.WriteLine("Description: " + netInterface.Description);
Console.WriteLine("Addresses: ");
IPInterfaceProperties ipProps = netInterface.GetIPProperties();
foreach (UnicastIPAddressInformation addr in ipProps.UnicastAddresses)
{
Console.WriteLine(" " + addr.Address.ToString());
}
Console.WriteLine("");
}
为什么不直接绑定到0.0.0.0?
你听所有IPS这样
IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());
你或许应该绑定到0.0.0.0:8000
,将其暴露在所有可用的IP地址,且仅当用户/管理员需要这样绑定到特定的IP地址。
我觉得OP是询问如何让所有的地址上的本地网卡,而不仅仅是知道DNS这些地址。 通过主,他很可能意味着下的主地址“使用下面的IP地址”,在适配器的属性,并通过“休息”,他很可能意味着那些高级上市>(附加)IP Addesses。
DNS不一定会知道这些。