本文主要介绍了C#获取本机所有IP地址的方法、C#获取本机IP地址(ipv4)的方法等。具有很好的参考价值。下面跟着小编一起来看下吧
获取本机所有IP地址:
这些地址是包含所有网卡(虚拟网卡)的ipv4和ipv6地址。
string name = Dns.GetHostName();
IPAddress[] ipadrlist = Dns.GetHostAddresses(name);
获取本机所有IPV4地址:
string name = Dns.GetHostName();
IPAddress[] ipadrlist = Dns.GetHostAddresses(name);
foreach (IPAddress ipa in ipadrlist)
{
if (ipa.AddressFamily == AddressFamily.InterNetwork)
Console.Writeline(ipa.ToString());
}
若要单单获取ipv4地址,可以用IPAdress.AddressFamily 属性判断:对于 IPv4,返回 InterNetwork;对于 IPv6,返回 InterNetworkV6。
然而如果本机可能有多个ipv4的地址,那如何获取访问默认网关时使用的网卡IP呢。在CSDN论坛找到了大神的方法,用的是查询本机路由表。
获取本机正在使用的ipv4地址(访问互联网的IP)
可别小看,还是有很多需要考虑的:
1.一个电脑有多个网卡,有线的、无线的、还有vmare虚拟的两个网卡。
2.就算只有一个网卡,但是该网卡配置了N个IP地址.其中还包括ipv6地址。
/// <summary>
/// 获取当前使用的IP
/// </summary>
/// <returns></returns>
public static string GetLocalIP()
{
string result = RunApp("route", "print",true);
Match m = Regex.Match(result, @"0.0.0.0\s+0.0.0.0\s+(\d+.\d+.\d+.\d+)\s+(\d+.\d+.\d+.\d+)");
if (m.Success)
{
return m.Groups[2].Value;
}
else
{
try
{
System.Net.Sockets.TcpClient c = new System.Net.Sockets.TcpClient();
c.Connect("www.baidu.com", 80);
string ip = ((System.Net.IPEndPoint)c.Client.LocalEndPoint).Address.ToString();
c.Close();
return ip;
}
catch (Exception)
{
return null;
}
}
}
/// <summary>
/// 获取本机主DNS
/// </summary>
/// <returns></returns>
public static string GetPrimaryDNS()
{
string result = RunApp("nslookup", "",true);
Match m = Regex.Match(result, @"\d+\.\d+\.\d+\.\d+");
if (m.Success)
{
return m.Value;
}
else
{
return null;
}
}
/// <summary>
/// 运行一个控制台程序并返回其输出参数。
/// </summary>
/// <param name="filename">程序名</param>
/// <param name="arguments">输入参数</param>
/// <returns></returns>
public static string RunApp(string filename, string arguments,bool recordLog)
{
try
{
if (recordLog)
{
Trace.WriteLine(filename + " " + arguments);
}
Process proc = new Process();
proc.StartInfo.FileName = filename;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.Arguments = arguments;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
using (System.IO.StreamReader sr = new System.IO.StreamReader(proc.StandardOutput.BaseStream, Encoding.Default))
{
//string txt = sr.ReadToEnd();
//sr.Close();
//if (recordLog)
//{
// Trace.WriteLine(txt);
/
沃梦达教程
本文标题为:C#获取本机IP地址(ipv4)
猜你喜欢
- user32.dll 函数说明小结 2022-12-26
- C# 使用Aspose.Cells 导出Excel的步骤及问题记录 2023-05-16
- Unity Shader实现模糊效果 2023-04-27
- 在C# 8中如何使用默认接口方法详解 2023-03-29
- .NET CORE DI 依赖注入 2023-09-27
- WPF使用DrawingContext实现绘制刻度条 2023-07-04
- c# 模拟线性回归的示例 2023-03-14
- 如何使用C# 捕获进程输出 2023-03-10
- Oracle中for循环的使用方法 2023-07-04
- Unity3D实现渐变颜色效果 2023-01-16