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 _ Private Shared Function GetIpNetTable( _ ByVal table As IntPtr, _ ByRef length As Integer, _ ByVal order As Boolean) As UInteger End Function End Class