|
||||
IP-Domen Автор: Randy Birch Добавьте следующий код в секцию объявлений модуля BAS: Option Explicit Private Const WSADescription_Len As Long = 256 Private Const WSASYS_Status_Len As Long = 128 Private Const WS_VERSION_REQD As Long = &H101 Private Const IP_SUCCESS As Long = 0 Private Const SOCKET_ERROR As Long = -1 Private Const AF_INET As Long = 2 Private Type WSADATA wVersion As Integer wHighVersion As Integer szDescription(0 To WSADescription_Len) As Byte szSystemStatus(0 To WSASYS_Status_Len) As Byte imaxsockets As Integer imaxudp As Integer lpszvenderinfo As Long End Type Private Declare Function WSAStartup Lib "wsock32" _ (ByVal VersionReq As Long, _ WSADataReturn As WSADATA) As Long Private Declare Function WSACleanup Lib "wsock32" () As Long Private Declare Function inet_addr Lib "wsock32" _ (ByVal s As String) As Long Private Declare Function gethostbyaddr Lib "wsock32" _ (haddr As Long, _ ByVal hnlen As Long, _ ByVal addrtype As Long) As Long Private Declare Sub CopyMemory Lib "kernel32" _ Alias "RtlMoveMemory" _ (xDest As Any, _ xSource As Any, _ ByVal nbytes As Long) Private Declare Function lstrlen Lib "kernel32" _ Alias "lstrlenA" _ (lpString As Any) As Long Public Function SocketsInitialize() As Boolean Dim WSAD As WSADATA SocketsInitialize = WSAStartup(WS_VERSION_REQD, WSAD) = IP_SUCCESS End Function Public Sub SocketsCleanup() If WSACleanup() <> 0 Then MsgBox "Windows Sockets error occurred in Cleanup.", vbExclamation End If End Sub Public Function GetHostNameFromIP(ByVal sAddress As String) As String Dim ptrHosent As Long Dim hAddress As Long Dim nbytes As Long If SocketsInitialize() Then 'преобразуем адрес из string в long hAddress = inet_addr(sAddress) If hAddress <> SOCKET_ERROR Then 'получаем указатель на структуру HOSTENT 'которая содержит имя и адрес, отвечающие за данный 'сетевой адрес. ptrHosent = gethostbyaddr(hAddress, 4, AF_INET) If ptrHosent <> 0 Then 'преобразуем адрес и получаем доменное имя CopyMemory ptrHosent, ByVal ptrHosent, 4 nbytes = lstrlen(ByVal ptrHosent) If nbytes > 0 Then sAddress = Space$(nbytes) CopyMemory ByVal sAddress, ByVal ptrHosent, nbytes GetHostNameFromIP = sAddress End If Else: MsgBox "Call to gethostbyaddr failed." End If 'If ptrHosent SocketsCleanup Else: MsgBox "String passed is an invalid IP." End If 'If hAddress Else: MsgBox "Sockets failed to initialize." End If 'If SocketsInitialize End Function
А теперь добавьте на форму кнопку (Command1), два текстовых поля (Text1 and Text2), и следующий код:
Private Sub Command1_Click() Text2.Text = GetHostNameFromIP(Text1.Text) End Sub
|
|
|||||||||||||||
Нам весьма интересны любые Ваши предложения о сотрудничестве. |
|
|