在撰寫C#程式中,我們通常可以透過如以下方法來取得本機的所有IP位址。
using System.Net; //加入 using System.Net.Sockets; //加入 /*------ 要先using上面兩個Class ------*/ /*------ Method Start ------*/ private static IPAddress[] getIPList() { return System.Net.Dns.GetHostEntry(string.Empty).AddressList; } /*------ Method End ------*/
但目前IPv4仍然是主流,IPv6僅是作業系統提供的功能,並未實際被使用,因此上述Method所取得的IP Address,還是不符合使用,如何將取得的IP Address僅列出IPv4的部分就需要加點工了,幸好.Net Framework中已經幫你解決了這個問題,我們僅需要透過Array.FindAll這個Method來查找IPAddress[] 中的AddressFamily符合AddressFamily.InterNetwork,只要符合的IP Address就是IPv4的位址。
using System.Net; //加入 using System.Net.Sockets; //加入 /*------ 要先using上面兩個Class ------*/ /*------ Method Start ------*/ private static IPAddress[] getIPv4List() { IPAddress[] ipv4Addresses; ipv4Addresses = Array.FindAll(Dns.GetHostEntry(string.Empty).AddressList, a => a.AddressFamily == AddressFamily.InterNetwork); return ipv4Addresses; } /*------ Method End ------*/
留言