Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Imports System.Net
- Imports System.Runtime.InteropServices
- '------------------
- 'Creator: aeonhack
- 'Site: elitevs.net
- 'Created: 4/24/2012
- 'Changed: 4/24/2012
- 'Version: 1.0.0
- '------------------
- Class ARP
- Private Delegate Function DnsHandler(address As IPAddress) As IPHostEntry
- Shared Function ResolveName(address As IPAddress, timeOut As Integer) As String
- Try
- Dim CB As New DnsHandler(AddressOf Dns.GetHostEntry)
- Dim R As IAsyncResult = CB.BeginInvoke(address, Nothing, Nothing)
- If R.AsyncWaitHandle.WaitOne(timeOut, False) Then
- Return CB.EndInvoke(R).HostName
- Else
- Return String.Empty
- End If
- Catch ex As Exception
- Return String.Empty
- End Try
- End Function
- Shared Function ConnectionCache() As IPAddress()
- Dim Size As Integer
- If Not GetIpNetTable(IntPtr.Zero, Size, False) = 122 Then Return New IPAddress() {}
- Dim Items As New List(Of IPAddress)
- Dim Handle As IntPtr = Marshal.AllocCoTaskMem(Size)
- If GetIpNetTable(Handle, Size, False) = 0 Then
- Dim Pointer As IntPtr
- Dim Count As Integer = Marshal.ReadInt32(Handle)
- For I As Integer = 0 To Count - 1
- Pointer = New IntPtr((Handle.ToInt32 + 4) + (I * 24))
- '3 = Dynamic, 4 = Static
- If Marshal.ReadInt32(Pointer, -4) = 3 Then
- Dim Address As Integer = Marshal.ReadInt32(Pointer, -8)
- Items.Add(New IPAddress(Int32ToUInt32(Address)))
- End If
- Next
- End If
- Marshal.FreeCoTaskMem(Handle)
- Return Items.ToArray()
- End Function
- Private Shared Function Int32ToUInt32(value As Integer) As UInteger
- Return BitConverter.ToUInt32(BitConverter.GetBytes(value), 0)
- End Function
- <DllImport("iphlpapi.dll", EntryPoint:="GetIpNetTable")> _
- Private Shared Function GetIpNetTable( _
- ByVal table As IntPtr, _
- ByRef length As Integer, _
- ByVal order As Boolean) As UInteger
- End Function
- End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement