最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年03月23日 17:06:25   作者:LJD泊水  
本文主要介紹了C#獲取本機(jī)所有IP地址的方法、C#獲取本機(jī)IP地址(ipv4)的方法等。具有很好的參考價值。下面跟著小編一起來看下吧

獲取本機(jī)所有IP地址:

這些地址是包含所有網(wǎng)卡(虛擬網(wǎng)卡)的ipv4和ipv6地址。

 string name = Dns.GetHostName(); 
 IPAddress[] ipadrlist = Dns.GetHostAddresses(name); 

獲取本機(jī)所有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。

然而如果本機(jī)可能有多個ipv4的地址,那如何獲取訪問默認(rèn)網(wǎng)關(guān)時使用的網(wǎng)卡IP呢。在CSDN論壇找到了大神的方法,用的是查詢本機(jī)路由表。

獲取本機(jī)正在使用的ipv4地址(訪問互聯(lián)網(wǎng)的IP)

可別小看,還是有很多需要考慮的:

1.一個電腦有多個網(wǎng)卡,有線的、無線的、還有vmare虛擬的兩個網(wǎng)卡。

2.就算只有一個網(wǎng)卡,但是該網(wǎng)卡配置了N個IP地址.其中還包括ipv6地址。

/// <summary> 
 /// 獲取當(dāng)前使用的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> 
 /// 獲取本機(jī)主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> 
 /// 運行一個控制臺程序并返回其輸出參數(shù)。 
 /// </summary> 
 /// <param name="filename">程序名</param> 
 /// <param name="arguments">輸入?yún)?shù)</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(); 
  //} 
  //上面標(biāo)記的是原文,下面是我自己調(diào)試錯誤后自行修改的 
  Thread.Sleep(100);  //貌似調(diào)用系統(tǒng)的nslookup還未返回數(shù)據(jù)或者數(shù)據(jù)未編碼完成,程序就已經(jīng)跳過直接執(zhí)行 
      //txt = sr.ReadToEnd()了,導(dǎo)致返回的數(shù)據(jù)為空,故睡眠令硬件反應(yīng) 
  if (!proc.HasExited)  //在無參數(shù)調(diào)用nslookup后,可以繼續(xù)輸入命令繼續(xù)操作,如果進(jìn)程未停止就直接執(zhí)行 
  {    //txt = sr.ReadToEnd()程序就在等待輸入,而且又無法輸入,直接掐住無法繼續(xù)運行 
   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來獲?。?/p>

private void GetIP() 
 { 
 Process cmd = new Process(); 
 cmd.StartInfo.FileName = "ipconfig.exe";//設(shè)置程序名 
 cmd.StartInfo.Arguments = "/all"; //參數(shù) 
 //重定向標(biāo)準(zhǔn)輸出 
 cmd.StartInfo.RedirectStandardOutput = true; 
 cmd.StartInfo.RedirectStandardInput = true; 
 cmd.StartInfo.UseShellExecute = false; 
 cmd.StartInfo.CreateNoWindow = true;//不顯示窗口(控制臺程序是黑屏) 
 //cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;//暫時不明白什么意思 
 /* 
 收集一下 有備無患 
 關(guān)于: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); 
 } 

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關(guān)文章

  • 詳解C#如何解決程序卡頓的問題(多線程初步學(xué)習(xí))

    詳解C#如何解決程序卡頓的問題(多線程初步學(xué)習(xí))

    在編寫程序的時候,有時候難免會出現(xiàn)后臺運行時間過長的問題,這個時候就要考慮多線程的操作了,所以本文給大家介紹了C#解決程序卡頓問題的方法,需要的朋友可以參考下
    2024-04-04
  • C# 控件屬性和InitializeComponent()關(guān)系案例詳解

    C# 控件屬性和InitializeComponent()關(guān)系案例詳解

    這篇文章主要介紹了C# 控件屬性和InitializeComponent()關(guān)系案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C#實現(xiàn)二叉查找樹

    C#實現(xiàn)二叉查找樹

    本文詳細(xì)講解了C#實現(xiàn)二叉查找樹的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#中winform窗體實現(xiàn)注冊/登錄功能實例(DBHelper類)

    C#中winform窗體實現(xiàn)注冊/登錄功能實例(DBHelper類)

    在編寫項目時,編寫了一部分關(guān)于登錄頁面的一些代碼,下面這篇文章主要給大家介紹了關(guān)于C#中winform窗體實現(xiàn)注冊/登錄功能(DBHelper類)的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • C#中委托的進(jìn)一步理解

    C#中委托的進(jìn)一步理解

    這篇文章主要介紹了C#中委托的進(jìn)一步理解,本文講解了委托類型、建立委托鏈、移除委托鏈等內(nèi)容,需要的朋友可以參考下
    2015-02-02
  • c#快速寫本地日志方法

    c#快速寫本地日志方法

    下面小編就為大家分享一篇c#快速寫本地日志方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • C#實現(xiàn)將DataTable內(nèi)容輸出到Excel表格的方法

    C#實現(xiàn)將DataTable內(nèi)容輸出到Excel表格的方法

    這篇文章主要介紹了C#實現(xiàn)將DataTable內(nèi)容輸出到Excel表格的方法,較為詳細(xì)的分析了C#基于DataTable保存Excel數(shù)據(jù)的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • Unity查找游戲物體的六種方式詳解

    Unity查找游戲物體的六種方式詳解

    最近學(xué)習(xí)unity3d做游戲,總結(jié)了一些實用的內(nèi)容,所以下面這篇文章主要給大家介紹了關(guān)于Unity查找游戲物體的六種方式,需要的朋友可以參考下
    2021-06-06
  • C# 列表List的常用屬性和方法介紹

    C# 列表List的常用屬性和方法介紹

    這篇文章主要介紹了C# 列表List的常用屬性和方法介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 一篇文章弄懂C#中的async和await

    一篇文章弄懂C#中的async和await

    這篇文章主要給大家介紹了如何通過一篇文章弄懂C#中async和await的相關(guān)資料,async和await相信大家應(yīng)該不陌生,讓異步處理變得更友好,本文通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-07-07

最新評論

马龙县| 南开区| 武陟县| 大渡口区| 临西县| 门头沟区| 周至县| 句容市| 连云港市| 磴口县| 宽城| 虎林市| 吉林市| 石柱| 平谷区| 新和县| 台山市| 尼木县| 明溪县| 尼勒克县| 门源| 太康县| 马山县| 阳原县| 红安县| 古浪县| 雷山县| 四子王旗| 广汉市| 临猗县| 平乐县| 娱乐| 盐城市| 合阳县| 竹山县| 白河县| 巩义市| 衡阳县| 陇川县| 永靖县| 祁连县|