Hier mein Test-Code:
Option Explicit
Private Const WS_VERSION_REQD As Long = &H202
Private Const SOCKET_ERROR As Long = -1
Private Const IP_SUCCESS As Long = 0&
Private Const WSADescription_Len As Long = 255 '256, 0-based
Private Const WSASYS_Status_Len As Long = 127 '128, 0-based
Private Const AF_INET As Integer = 2
Private Type WSADATA
nVersion As Integer
nHighVersion As Integer
yDescription(0 To WSADescription_Len) As Byte
ySystemStatus(0 To WSASYS_Status_Len) As Byte
nMaxSockets As Integer
nMaxUdp As Integer
lVvenderInfo As Long
End Type
Private Type sockaddr_in
sin_family As Integer
sin_port As Integer
sin_addr As Long
sin_zero(0 To 8) As Byte
End Type
Private Declare Function WSAStartup Lib "WS2_32" (ByVal VersionReq As Long, _
WSADataReturn As WSADATA) As Long
Private Declare Function WSACleanup Lib "WS2_32" () As Long
Private Declare Function inet_addr Lib "WS2_32" (ByVal s As String) As Long
Private Declare Function getnameinfo Lib "WS2_32" (addr As Any, ByVal iLen As _
Long, ByRef host As String, ByVal HostLen As Long, ByRef serv As String, _
ByVal servlen As Long, ByVal Flags As Long) As Long
Private Declare Sub ZeroMemory Lib "KERNEL32" Alias "RtlZeroMemory" (dest As _
Any, ByVal numBytes As Long)
Private Sub Form_Load()
Dim llIP As Long
Dim ltWSAD As WSADATA
Dim ltSockAddr_in As sockaddr_in
Dim lsHostname As String
Dim llReturnCode As Long
If WSAStartup(WS_VERSION_REQD, ltWSAD) = IP_SUCCESS Then
llIP = inet_addr("209.85.129.147") 'convert string
' google.de ip to long
If llIP <> SOCKET_ERROR Then
ZeroMemory ltSockAddr_in, CLng(Len(ltSockAddr_in)) 'initialize
' structure
ltSockAddr_in.sin_family = AF_INET
ltSockAddr_in.sin_addr = llIP 'ip address
lsHostname = String$(1025, 0) 'reserve space
' für hostname info
llReturnCode = getnameinfo(ltSockAddr_in, Len(ltSockAddr_in), _
lsHostname, Len(lsHostname), 0, 0, 0)
MsgBox CStr(llReturnCode)
Else
MsgBox "Invalid IP"
End If
WSACleanup
Else
MsgBox "Error Startup"
End If
End Sub |