首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.Net IPAddress IPv4

.Net IPAddress IPv4
EN

Stack Overflow用户
提问于 2010-01-12 18:17:29
回答 3查看 7K关注 0票数 8

我有以下代码:

代码语言:javascript
复制
Dim ipAdd As IPAddress = Dns.GetHostEntry(strHostname).AddressList(0)
Dim strIP As String = ipAdd.ToString()

当我转换为字符串而不是192.168.1.0或类似的IPv4地址时,我得到了IPv6版本: fd80::5dbe:5d89:e51b:d313地址。

有没有办法从IPAddress类型返回IPv4地址?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-12 18:20:16

您可以使用第一个IPv4地址,而不是无条件地获取AddressList的第一个元素:

代码语言:javascript
复制
var address = Dns.GetHostEntry(strHostname)
                 .AddressList
                 .First(ip => ip.AddressFamily == AddressFamily.InterNetwork);
票数 16
EN

Stack Overflow用户

发布于 2011-02-17 00:29:52

dtb的解决方案将在许多情况下工作。但是,在许多情况下,用户可能会在其系统上设置多个v4 In。有时这是因为他们有一些“虚拟”适配器(来自VirtualBox或VMWare等应用程序),或者因为他们有多个物理网络适配器连接到他们的计算机。

不用说,在这些情况下,使用正确的IP是很重要的。您可能需要考虑询问用户哪个IP是合适的。

要获取可用的v4 IP列表,您可以使用类似于以下代码的代码:

代码语言:javascript
复制
 'Get an array which contains all available IPs:     Dim IPList() As IPAddress = Net.Dns.GetHostEntry(Net.Dns.GetHostName.ToString).AddressList
代码语言:javascript
复制
'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
票数 2
EN

Stack Overflow用户

发布于 2012-08-30 19:10:41

对我来说,带有"First“谓词的解决方案不能正常工作,这是对我有效的代码:

代码语言:javascript
复制
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;
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2048132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档