我正在制作一个C#应用程序的问题。我试图通过简单地单击按钮让所有IP显示在Windows窗体的文本框中。我目前有一个合作基地:
private void btnIP_Click(object sender, EventArgs e)
{
NetworkInterface[] ipadapters = NetworkInterface.GetAllNetworkInterfaces();
string iptemplate = @"
Network adapter: {0}
IP: {1}";
string IPText = "";
foreach (NetworkInterface AdapterIP in ipadapters)
{
IPText = IPText + String.Format(iptemplate,
AdapterIP.Name,
AdapterIP = ipadd());
}
txtOutput.Text = IPText;
}
但是,我只是不明白我是否可以使用
来做到这一点 using System.Net.NetworkInformation;
如果有人可以向我解释如何从那里获取IP并显示它,那将会有很大帮助。我见过人们查询DNS以检索主机名等,但我只想显示所有适配器的所有IPv4和IPv6地址。
我只是不理解它。我知道我需要保留foreach()方法,但不知道如何构建这个代码以使其工作。注意:我有一个描述和所有适配器的所有工作,但我已经创建了一个专门用于IP的单独按钮。
答案 0 :(得分:1)
string hostName = Dns.GetHostName();
string myIP = Dns.GetHostByName(hostName).AddressList[0].ToString();
答案 1 :(得分:0)
以下是关于如何执行此操作的精彩文章。它提供了您需要的所有信息。
How to get the IP address of the server on which my C# application is running on?
基本上就是这样:
var host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
var localIP = ip.ToString();
//do more here...
}
答案 2 :(得分:0)
var ipEntry = Dns.GetHostEntry(Dns.GetHostName());
foreach (var ip in ipEntry.AddressList)
{
if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6)
{
//IPv6
}
else if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
//IPv4
}
}