Vb.net 如何使用vb获取本地ip地址?

Vb.net 如何使用vb获取本地ip地址?,vb.net,Vb.net,如何在vb.net中获取ip地址。我使用下面的代码来获取本地ip地址,但它显示dns未声明。有人能告诉我代码中的Dns是什么吗 VB代码 Imports System.Environment Imports System.Net Public Class Tester Public Shared Sub Main Dim hostname As String = Dns.GetHostName() Dim ipaddress As String = CType(Dns.GetHostByNam

如何在vb.net中获取ip地址。我使用下面的代码来获取本地ip地址,但它显示dns未声明。有人能告诉我代码中的Dns是什么吗

VB代码

Imports System.Environment
Imports System.Net

Public Class Tester
Public Shared Sub Main
Dim hostname As String = Dns.GetHostName()
Dim ipaddress As String = CType(Dns.GetHostByName(hostname).AddressList.GetValue(0), IPAddr
ess).ToString
Console.WriteLine("Computer Name: " & hostname & " IP Address: " & ipaddress)
End Sub

End Class

Dns
是命名空间
System.Net
中的一个类,它提供了有关“域名系统”的功能(因此名称
Dns
)-请参见使用此:

HttpContext.Current.Request.UserHostAddres
希望这能有所帮助。

ips=Dns.GetHostAddresses(主机名)

Dim hostName = System.Net.Dns.GetHostName()
    For Each hostAdr In System.Net.Dns.GetHostEntry(hostName).AddressList()

        ' If you just want to write every IP
        'Console.WriteLine("Name: " & hostName & " IP Address: " & hostAdr.ToString())
        Me.RichTextBox1.Text = hostAdr.ToString

        'If you want to look if the device is member of a specific network

        ' ...
    Next

下面是一个示例代码

您可以使用以下代码获取系统的本地ip地址:

Dim host As String = System.Net.Dns.GetHostName()
Dim LocalHostaddress As String = System.Net.Dns.GetHostByName(host).AddressList(1).ToString()

因为我觉得,这个问题(在标题中)还没有完全回答

Dim hostName = System.Net.Dns.GetHostName()
For Each hostAdr In System.Net.Dns.GetHostEntry(hostName).AddressList()

    ' If you just want to write every IP
    Console.WriteLine("Name: " & hostName & " IP Address: " & hostAdr.ToString() 

    ' If you want to look if the device is member of a specific network
    If hostAdr.ToString().StartsWith("192.168.1.") Then DoSomething() : Exit For

    ' I think you get the idea ^^
    ' ...
Next
。。。显然,这并不完全是OP所要求的,但仅仅从标题和谷歌链接来看,这应该能回答来到这里的人们所需要的

顺便说一句,
GetHostByName()
似乎已被弃用,
GetHostEntry()
类似的方法也会以同样的方式工作,不会引发警告

Dim ipaddress As String =
    Dns.GetHostEntry(Dns.GetHostName).AddressList(0).ToString
这很可能会给出IPv6地址

这将提供IPv4地址

我的VB已经生锈了,所以这里有一个适合我的C代码

using System.Linq;

using System.Net.Sockets;

string IPaddress =
    Dns.GetHostEntry(Dns.GetHostName()).AddressList[0].ToString(); //For Ipv6

string IPaddress =
    Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(ip =>
    ip.AddressFamily == AddressFamily.InterNetwork).ToString(); //For Ipv4
我希望这能有所帮助。

我找到了一个获得自己IP的好例子

Dim hostName = System.Net.Dns.GetHostName()
    For Each hostAdr In System.Net.Dns.GetHostEntry(hostName).AddressList()

        ' If you just want to write every IP
        'Console.WriteLine("Name: " & hostName & " IP Address: " & hostAdr.ToString())
        Me.RichTextBox1.Text = hostAdr.ToString

        'If you want to look if the device is member of a specific network

        ' ...
    Next
        Dim _IP As String = Nothing

        Dim _IPHostEntry As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName())

        For Each _IPAddress As System.Net.IPAddress In _IPHostEntry.AddressList
            If _IPAddress.AddressFamily.ToString() = "InterNetwork" Then
                _IP = _IPAddress.ToString()
            End If
        Next _IPAddress
        Return _IP

你知道一台机器可能没有或有几个ip地址吗?现在你完全改变了问题-首先你问的是
Dns
,现在你问的是连接客户端的ip。。。如果你有第二个问题,你必须打开第二个问题,不要改变第一个问题!!!我把你的问题退回到原来的问题上。。。如果任何答案有帮助,请投票/标记为接受,并打开关于“客户端ip”的第二个问题!使用dns类,这里有更多信息。显然,不知道以礼貌、可接受、文明、人性、正常、体面的方式提问的人这是一个糟糕且典型的回答。当我们所需的IP位于“AddressList()”的索引0或2时会发生什么情况?这将是一个更好的解决方案,但仍然不是100%有效:返回(从IP返回System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList(),其中不是IP.ToString.Contains(“:”).FirstOrDefault.ToString如果安装了环回适配器或蓝牙LAN适配器,会发生什么情况?假设网络适配器1是正确的,无需检查。问题是-索引数组从0开始,而不是从1开始。阵列中甚至可能没有适配器1。最好的方法是foreach遍历适配器,并通过简单的验证方法来测试ipv4、ipv6或bt地址,从而[确定]哪一个是正确的。