我有以下代碼:淨ip地址的IPv4
Dim ipAdd As IPAddress = Dns.GetHostEntry(strHostname).AddressList(0)
Dim strIP As String = ipAdd.ToString()
當我轉換爲字符串,而不是IPv4地址192.168.1.0一樣或類似的我得到的IPv6版本:FD80 :: 5dbe:5d89:e51b :d313地址。
有沒有辦法可以從IPAddress類型返回IPv4地址?
感謝
我有以下代碼:淨ip地址的IPv4
Dim ipAdd As IPAddress = Dns.GetHostEntry(strHostname).AddressList(0)
Dim strIP As String = ipAdd.ToString()
當我轉換爲字符串,而不是IPv4地址192.168.1.0一樣或類似的我得到的IPv6版本:FD80 :: 5dbe:5d89:e51b :d313地址。
有沒有辦法可以從IPAddress類型返回IPv4地址?
感謝
而不是無條件地採取AddressList中的第一個元素,你可以採取的第一個IPv4地址:
var address = Dns.GetHostEntry(strHostname)
.AddressList
.First(ip => ip.AddressFamily == AddressFamily.InterNetwork);
DTB的解決方案將在許多情況下工作。然而,在許多情況下,用戶可能會在其系統上安裝多個v4 IP。有時這是因爲他們有一些「虛擬」適配器(來自VirtualBox或VMWare等應用程序),或者因爲他們有多個物理網絡適配器連接到他們的計算機。
毫無疑問,在這些情況下,使用正確的IP非常重要。你可能想要考慮詢問用戶哪個IP是合適的。
爲了讓你可以使用類似於代碼可用V4的IP地址列表:
「獲取它包含了所有可用IP的數組:)作爲ip地址= Net.Dns.GetHostEntry 昏暗IPLIST((淨。 Dns.GetHostName.ToString).AddressList
'Copy valid IPs from IPList to FinalIPList
Dim FinalIPList As New ArrayList(IPList.Length)
For Each IP As IPAddress In IPList
'We want to keep IPs only if they are IPv4 and not a 'LoopBack' device
'(an InterNetwork AddressFamily indicates a v4 IP)
If ((Not IPAddress.IsLoopback(IP)) And (IP.AddressFamily = AddressFamily.InterNetwork)) Then
FinalIPList.Add(IP)
End If
Next IP
對我來說,與「第一」謂詞的解決方案沒有正常工作,這是對我的作品的代碼:
public static string GetLocalIP()
{
string ipv4Address = String.Empty;
foreach (IPAddress currrentIPAddress in Dns.GetHostAddresses(Dns.GetHostName()))
{
if (currrentIPAddress.AddressFamily.ToString() == System.Net.Sockets.AddressFamily.InterNetwork.ToString())
{
ipv4Address = currrentIPAddress.ToString();
break;
}
}
return ipv4Address;
}
這裏的VB版本的: Dim ipAdd As IPAddress = Dns.GetHostEntry(「aol.com」).AddressFirst = – 2010-01-12 14:12:38