如何使用VB.net显示IPv4地址

时间:2013-12-13 04:15:07

标签: vb.net

我在youtube上找到了这个代码,并且跟着它完全一样。 MAC地址和nic名称显示,但IPv4不会显示。基本上我想显示我的计算机内所有网络接口的ipv4地址与其连接或不连接。这里是代码

  Private Sub getinterface()
    'get all network interface available in system
    Dim nics As NetworkInterface() = NetworkInterface.GetAllNetworkInterfaces()
    If nics.Length < 0 Or nics Is Nothing Then
        MsgBox("No network interfaces found")
        Exit Sub
    End If


    'if interfaces are found let list them. first clear the listview items
    ListView1.Items.Clear()


    For Each netadapter As NetworkInterface In nics
        'next lets set variable to get interface properties for later use
        Dim intproperties As IPInterfaceProperties = netadapter.GetIPProperties()
        'now add the network adaptername to the list
        ListView1.Items.Add(netadapter.Name)


        'now get the mac address of this interface
        Dim paddress As PhysicalAddress = netadapter.GetPhysicalAddress()
        Dim addbyte As Byte() = paddress.GetAddressBytes()
        Dim macaddress As String = ""


        'now loop through the bytes value and change it to hex
        For i = 0 To addbyte.Length - 1
            macaddress &= addbyte(i).ToString("X2") 'change string to hex
            'now let separate hex value with -except last one
            If i <> addbyte.Length - 1 Then
                macaddress &= "-"
            End If

        Next

        'ount item in listview
        Dim icount As Integer = ListView1.Items.Count

        'use try
        Try
            With ListView1.Items(icount - 1).SubItems
                .Add(macaddress)
                '.Add(intproperties.UnicastAddresses(2).Address.ToString)
                .Add(intproperties.AnycastAddresses(2).Address.ToString)

                .Add(intproperties.UnicastAddresses(2).IPv4Mask.ToString)

                .Add(intproperties.UnicastAddresses(0).Address.ToString)
                .Add(intproperties.UnicastAddresses(1).Address.ToString)
                '.Add( IPAddress.Parse(a).AddressFamily == AddressFamily.InterNetwork )
            End With

        Catch ex As Exception

        End Try

    Next
    'now lets make auto size columns
    ListView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent)
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    getinterface()
End Sub

是否有针对此代码的解决方案,或者还有另一种更简单的方法来显示所有带有其ipv4地址的nic名称?目前使用visual basic express 2010 express

1 个答案:

答案 0 :(得分:0)

使用WMI查询 - 这将简单得多。

有一些有用的课程可用 - Win32_NetworkAdapterConfiguration&amp; Win32_NetworkAdapter获取这些详细信息。要轻松创建WMI代码,请搜索WMI Code Creator

Imports System
Imports System.Management
Imports System.Windows.Forms

Namespace WMISample

    Public Class MyWMIQuery

        Public Overloads Shared Function Main() As Integer

            Try
                Dim searcher As New ManagementObjectSearcher( _
                    "root\CIMV2", _
                    "SELECT * FROM Win32_NetworkAdapterConfiguration") 

                For Each queryObj As ManagementObject in searcher.Get()

                    Console.WriteLine("-----------------------------------")
                    Console.WriteLine("Win32_NetworkAdapterConfiguration instance")
                    Console.WriteLine("-----------------------------------")

                    If queryObj("IPAddress") Is Nothing Then
                        Console.WriteLine("IPAddress: {0}", queryObj("IPAddress"))
                    Else
                        Dim arrIPAddress As String()
                        arrIPAddress = queryObj("IPAddress")
                        For Each arrValue As String In arrIPAddress
                            Console.WriteLine("IPAddress: {0}", arrValue)
                        Next
                    End If
                    Console.WriteLine("IPEnabled: {0}", queryObj("IPEnabled"))
                    Console.WriteLine("MACAddress: {0}", queryObj("MACAddress"))
                Next
            Catch err As ManagementException
                MessageBox.Show("An error occurred while querying for WMI data: " & err.Message)
            End Try
        End Function
    End Class
End Namespace