C#中如何得到机器的IP地址
2个回答
2018-06-11
展开全部
这两个方法是我一直在用的,都可正常获取到IP地址和Mac地址。
/// <summary>
/// 获取IP地址
/// </summary>
/// <returns>IP地址</returns>
public string GetLocalIP()
{
try
{
System.Net.NetworkInformation.NetworkInterface[] nics = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();
foreach (System.Net.NetworkInformation.NetworkInterface adapter in nics)
{
if (adapter.NetworkInterfaceType == System.Net.NetworkInformation.NetworkInterfaceType.Ethernet)
{
var mac = adapter.GetPhysicalAddress();
System.Net.NetworkInformation.IPInterfaceProperties ip = adapter.GetIPProperties();
System.Net.NetworkInformation.UnicastIPAddressInformationCollection ipCollection = ip.UnicastAddresses;
foreach (System.Net.NetworkInformation.UnicastIPAddressInformation ipadd in ipCollection)
{
if (ipadd.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
return ipadd.Address.ToString();
}
}
}
}
}
catch { }
return null;
}
/// <summary>
/// 获取本机MAC地址
/// </summary>
/// <returns>本机MAC地址</returns>
public string GetMacAddress()
{
string mac = "";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"] == true)
{
mac = mo["MacAddress"].ToString().Replace(":", "").Replace("-", "").ToUpper();
break;
}
}
moc = null;
mc = null;
return mac;
}
/// <summary>
/// 获取IP地址
/// </summary>
/// <returns>IP地址</returns>
public string GetLocalIP()
{
try
{
System.Net.NetworkInformation.NetworkInterface[] nics = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();
foreach (System.Net.NetworkInformation.NetworkInterface adapter in nics)
{
if (adapter.NetworkInterfaceType == System.Net.NetworkInformation.NetworkInterfaceType.Ethernet)
{
var mac = adapter.GetPhysicalAddress();
System.Net.NetworkInformation.IPInterfaceProperties ip = adapter.GetIPProperties();
System.Net.NetworkInformation.UnicastIPAddressInformationCollection ipCollection = ip.UnicastAddresses;
foreach (System.Net.NetworkInformation.UnicastIPAddressInformation ipadd in ipCollection)
{
if (ipadd.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
return ipadd.Address.ToString();
}
}
}
}
}
catch { }
return null;
}
/// <summary>
/// 获取本机MAC地址
/// </summary>
/// <returns>本机MAC地址</returns>
public string GetMacAddress()
{
string mac = "";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"] == true)
{
mac = mo["MacAddress"].ToString().Replace(":", "").Replace("-", "").ToUpper();
break;
}
}
moc = null;
mc = null;
return mac;
}
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效...
点击进入详情页
本回答由Storm代理提供
展开全部
新人请查询相关手册,大神请按照自己意愿修改。
以下代码是通过给定的主机名称得到IP地址:
DNSUtility代码
namespace NKUtilities
{
using System;
using System.Net;
public class DNSUtility
{
public static int Main (string [] args)
{
String strHostName = new String ("");
if (args.Length == 0)
{
// 首先得到本地机器的主机名称
strHostName = DNS.GetHostName ();
Console.WriteLine ("Local Machine's Host Name: " + strHostName);
}
else
{
strHostName = args[0];
}
// 然后通过主机名称得到IP地址列表
IPHostEntry ipEntry = DNS.GetHostByName (strHostName);
IPAddress [] addr = ipEntry.AddressList;
for (int i = 0; i < addr.Length; i++)
{
Console.WriteLine ("IP Address {0}: {1} ", i, addr[i].ToString ());
}
return 0;
}
}
}
代码的解释
如果想得到本地机器的主机名,你可以不加参数调用GetHostName方法。然后你可以用返回的结果作为参数调用GetHostByName方法得到IPAddresses列表,然后遍历addresses集合得到主机的IP地址。
提示
确认在代码中已经包含了System.Net名称空间,否则编译器将不知道如何找到DNS类。同样,当使用VisualStudio.NET创建工程的时候,要确认系统已经包含System.NET.Dll。关于DNS类和System.Net名称空间的更详细的信息请参考.NET SDK在线文档。
以下代码是通过给定的主机名称得到IP地址:
DNSUtility代码
namespace NKUtilities
{
using System;
using System.Net;
public class DNSUtility
{
public static int Main (string [] args)
{
String strHostName = new String ("");
if (args.Length == 0)
{
// 首先得到本地机器的主机名称
strHostName = DNS.GetHostName ();
Console.WriteLine ("Local Machine's Host Name: " + strHostName);
}
else
{
strHostName = args[0];
}
// 然后通过主机名称得到IP地址列表
IPHostEntry ipEntry = DNS.GetHostByName (strHostName);
IPAddress [] addr = ipEntry.AddressList;
for (int i = 0; i < addr.Length; i++)
{
Console.WriteLine ("IP Address {0}: {1} ", i, addr[i].ToString ());
}
return 0;
}
}
}
代码的解释
如果想得到本地机器的主机名,你可以不加参数调用GetHostName方法。然后你可以用返回的结果作为参数调用GetHostByName方法得到IPAddresses列表,然后遍历addresses集合得到主机的IP地址。
提示
确认在代码中已经包含了System.Net名称空间,否则编译器将不知道如何找到DNS类。同样,当使用VisualStudio.NET创建工程的时候,要确认系统已经包含System.NET.Dll。关于DNS类和System.Net名称空间的更详细的信息请参考.NET SDK在线文档。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询