获取本机所有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);
//}
//if (!proc.HasExited)
//{
// proc.Kill();
//}
//上面标记的是原文,下面是我自己调试错误后自行修改的
Thread.Sleep(100); //貌似调用系统的nslookup还未返回数据或者数据未编码完成,程序就已经跳过直接执行
//txt = sr.ReadToEnd()了,导致返回的数据为空,故睡眠令硬件反应
if (!proc.HasExited) //在无参数调用nslookup后,可以继续输入命令继续操作,如果进程未停止就直接执行
{ //txt = sr.ReadToEnd()程序就在等待输入,而且又无法输入,直接掐住无法继续运行
proc.Kill();
}
string txt = sr.ReadToEnd();
sr.Close();
if (recordLog)
Trace.WriteLine(txt);
return txt;
}
}
catch (Exception ex)
{
Trace.WriteLine(ex);
return ex.Message;
}
}
另有一种方法通过用ipconfig来获取:
private void GetIP()
{
Process cmd = new Process();
cmd.StartInfo.FileName = "ipconfig.exe";//设置程序名
cmd.StartInfo.Arguments = "/all"; //参数
//重定向标准输出
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.UseShellExecute = false;
cmd.StartInfo.CreateNoWindow = true;//不显示窗口(控制台程序是黑屏)
//cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;//暂时不明白什么意思
/*
收集一下 有备无患
关于:ProcessWindowStyle.Hidden隐藏后如何再显示?
hwndWin32Host = Win32Native.FindWindow(null, win32Exinfo.windowsName);
Win32Native.ShowWindow(hwndWin32Host, 1); //先FindWindow找到窗口后再ShowWindow
*/
cmd.Start();
string info = cmd.StandardOutput.ReadToEnd();
cmd.WaitForExit();
cmd.Close();
textBox1.AppendText(info);
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# C#
# 获取
# IP
# C#获取本机IP地址和Mac地址的方法
# C# 获取本机IP地址(IPv4和IPv6)
# 本机
# 的是
# 多个
# 互联网
# 就在
# 有备无患
# 有很多
# 可以用
# 不明白
# 大神
# 能有
# 另有
# 还未
# 只有一个
# 什么意思
# 可别
# 若要
# 跳过
# 为空
# 黑屏
相关文章:
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
开封网站制作公司,网络用语开封是什么意思?
如何实现建站之星域名转发设置?
如何用PHP快速搭建高效网站?分步指南
教学论文网站制作软件有哪些,写论文用什么软件
?
建站之星后台密码遗忘?如何快速找回?
宝塔建站助手安装配置与建站模板使用全流程解析
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
建站之星免费版是否永久可用?
如何确保FTP站点访问权限与数据传输安全?
建站之星图片链接生成指南:自助建站与智能设计教程
定制建站模板如何实现SEO优化与智能系统配置?18字教程
建站10G流量真的够用吗?如何应对访问高峰?
已有域名和空间如何快速搭建网站?
定制建站流程解析:需求评估与SEO优化功能开发指南
香港网站服务器数量如何影响SEO优化效果?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
c++ stringstream用法详解_c++字符串与数字转换利器
导航网站建站方案与优化指南:一站式高效搭建技巧解析
建站主机空间推荐 高性价比配置与快速部署方案解析
如何打造高效商业网站?建站目的决定转化率
网站制作知乎推荐,想做自己的网站用什么工具比较好?
微信h5制作网站有哪些,免费微信H5页面制作工具?
如何选择服务器才能高效搭建专属网站?
如何在橙子建站上传落地页?操作指南详解
高防服务器租用指南:配置选择与快速部署攻略
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
设计网站制作公司有哪些,制作网页教程?
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
如何快速生成专业多端适配建站电话?
海南网站制作公司有哪些,海口网是哪家的?
如何选择靠谱的建站公司加盟品牌?
微信推文制作网站有哪些,怎么做微信推文,急?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
太平洋网站制作公司,网络用语太平洋是什么意思?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
如何选购建站域名与空间?自助平台全解析
实例解析angularjs的filter过滤器
广州商城建站系统开发成本与周期如何控制?
七夕网站制作视频,七夕大促活动怎么报名?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
Android滚轮选择时间控件使用详解
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
建站为何优先选择香港服务器?
招商网站制作流程,网站招商广告语?
制作网站公司那家好,网络公司是做什么的?
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
*请认真填写需求信息,我们会在24小时内与您取得联系。