Imports System.Net.NetworkInformation
Imports System.Net
Imports System.Net.Dns
Public Class MyNet
    Public Shared Function GetMacAddr() As String  '//MAC주소를 볼수있다.
        Dim computerProperties As IPGlobalProperties = IPGlobalProperties.GetIPGlobalProperties()
        Dim nics As NetworkInterface() = NetworkInterface.GetAllNetworkInterfaces()
        Dim adapter As NetworkInterface

        Dim 출력용 As String = vbNullString
        Dim 카드타입 As String = vbNullString
        Dim 맥주소 As String = vbNullString
        Dim 임시맥주소 As String = vbNullString

        For Each adapter In nics
            Dim properties As IPInterfaceProperties = adapter.GetIPProperties()

            카드타입 = adapter.NetworkInterfaceType.ToString.ToUpper.Trim
            맥주소 = adapter.GetPhysicalAddress.ToString.ToUpper.Trim

            '//VMWARE NIC 까지 감지를 한다.
            If 카드타입 = "ETHERNET" Then 임시맥주소 = 맥주소
            If 카드타입 = "ETHERNET" And 임시맥주소.Substring(0, 11) <> "005056C0000" Then 출력용 = 임시맥주소

        Next adapter

        If 출력용 = vbNullString And 맥주소 = vbNullString Then
            Return "UNKNOWN"
        ElseIf 출력용 <> vbNullString Then
            ' MsgBox("맥주소출력")
            Return (출력용)
        Else
            'MsgBox("임시맥주소발견")
            Return (임시맥주소)
        End If
    End Function 'DisplayTypeAndAddress
    Public Shared Function GetMacArray(Optional ByVal OnlyEthernet As Boolean = True) As NetworkInterface()  '//MAC주소를 볼수있다.
        Dim computerProperties As IPGlobalProperties = IPGlobalProperties.GetIPGlobalProperties()
        Dim nics As NetworkInterface() = NetworkInterface.GetAllNetworkInterfaces()
        Dim adapter As NetworkInterface

        Dim 출력용 As String = vbNullString
        Dim 카드타입 As String = vbNullString
        Dim 맥주소 As String = vbNullString
        Dim 임시맥주소 As String = vbNullString

        Dim RetNics() As NetworkInterface = Nothing
        For Each adapter In nics

            Dim properties As IPInterfaceProperties = adapter.GetIPProperties()

            카드타입 = adapter.NetworkInterfaceType.ToString.ToUpper.Trim
            맥주소 = adapter.GetPhysicalAddress.ToString.ToUpper.Trim


            '//VMWARE NIC 까지 감지를 한다.
            If adapter.Description.ToUpper.IndexOf("VIRTUALBOX") = -1 AndAlso adapter.Description.ToUpper.IndexOf("VMWARE") = -1 Then

                If OnlyEthernet Then    '//이너넷만 할떄
                    If 카드타입 = "ETHERNET" Then
                        If RetNics Is Nothing Then
                            ReDim Preserve RetNics(0)
                        Else
                            ReDim Preserve RetNics(RetNics.GetUpperBound(0) + 1)
                        End If
                        RetNics(RetNics.GetUpperBound(0)) = adapter
                    End If
                Else    '//전부다
                    If RetNics Is Nothing Then
                        ReDim Preserve RetNics(0)
                    Else
                        ReDim Preserve RetNics(RetNics.GetUpperBound(0) + 1)
                    End If
                    RetNics(RetNics.GetUpperBound(0)) = adapter
                End If

            End If
        Next
        Return RetNics
    End Function 'DisplayTypeAndAddress

    Public Shared Function GetLocalHostIP() As String  '//ip주소보기
        Dim objAddress As IPAddress
        Dim B(15) As Byte
        Dim sAns As String
        Try
            objAddress = Dns.GetHostEntry(GetHostName).AddressList(0)
            sAns = objAddress.ToString
        Catch ex As Exception
            sAns = ""
        End Try
        Return sAns
    End Function

    Public Shared Function GetLocalHostIPArray() As ArrayList  '//ip주소보기

        Dim B(15) As Byte
        Dim sAns As New ArrayList
        For Each objAddress As IPAddress In Dns.GetHostEntry(GetHostName).AddressList
            If IsNumeric(objAddress.ToString.Substring(0, 3)) Then
                sAns.Add(objAddress.ToString)
            End If
        Next
        Return sAns
    End Function
End Class