国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#獲取本機IP地址(ipv4)

2019-10-29 21:12:18
字體:
來源:轉載
供稿:網友

獲取本機所有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);  } 

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持VEVB武林網!


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 犍为县| 武强县| 新竹市| 武隆县| 平邑县| 建水县| 姚安县| 阜阳市| 从化市| 剑川县| 通榆县| 吴旗县| 呼图壁县| 繁峙县| 筠连县| 黄大仙区| 正宁县| 镶黄旗| 赣榆县| 鄱阳县| 云梦县| 东安县| 新干县| 卢湾区| 玉田县| 姚安县| 榆树市| 镇原县| 调兵山市| 从化市| 石阡县| 温州市| 临潭县| 长沙市| 略阳县| 汉源县| 巴里| 金川县| 安达市| 巩留县| 安庆市|