获得本机IP和DNS方法。
来源:互联网 发布:数值优化 编辑:程序博客网 时间:2024/05/17 09:15
载自屡试不爽的某位大神。
利用tcp发送报文,给已知存在的IP发送tcp连接,可以获得本地有效ip。
/// <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);
}
if (!proc.HasExited)
{
proc.Kill();
}
return txt;
}
}
catch (Exception ex)
{
Trace.WriteLine(ex);
return ex.Message;
}
}
- 获得本机IP和DNS方法。
- 两种方法获得本机IP
- win32获得本机IP的方法
- 获得本机IP和名称
- 获得本机IP和MAC地址
- 获得本机外部IP和名称
- C#获得本机IP和Mac
- 获得本机IP和名称
- 获得本机IP
- 获得本机IP
- 获得本机ip
- C# 设置本机IP、网关和DNS
- 获得及设置本机的ip地址,子网掩码,网关,dns服务器信息
- pb中获得本机IP地址的另一个方法
- 获得本机IP信息
- 如何获得本机IP
- C# 获得本机IP
- C# 获得本机IP
- 深入理解java虚拟机【Java虚拟机垃圾收集器】
- 电子游戏与自由主义
- CoInitialize浅析一
- 深入理解java虚拟机【Java Class类文件结构】
- CoInitialize浅析二
- 获得本机IP和DNS方法。
- 整数,小数及常用的正则表达式
- MFC在共享DLL中使用和在静态库中使用的一些问题
- 用正则表达式分割字符串
- Tumblr创始人David Karp:文艺技术男的成功之路
- AfxOleInit()/CoInitialize()/CoInitializeEx()
- 关于interface HttpServletRequest
- JVM调优总结(十)-调优方法
- Hadoop管理员的十个最佳实践