打印本文 打印本文 关闭窗口 关闭窗口
将域名转IP的VB源代码
作者:武汉SEO闵涛  文章来源:本站原创  点击数1047  更新时间:2010/7/15 14:45:59  文章录入:mintao  责任编辑:mintao

域名IP的VB源代码

以下是代码片段:
Option Explicit
'###################
'    敏韬网 www.mintao.net
'###################
Private Type HOSTENT
    hName As Long
    hAliases As Long
    hAddrType As Integer
    hLength As Integer
    hAddrList As Long
End Type
  
Private Type WSADATA
    wversion As Integer
    wHighVersion As Integer
    szDescription(0 To 256) As Byte
    szSystemStatus(0 To 128) As Byte
    iMaxSockets As Integer
    iMaxUdpDg As Integer
    lpszVendorInfo As Long
End Type
  
Private Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long
Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal wVersionRequired As Integer, lpWSAData As WSADATA) As Long
Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
Private Declare Function gethostname Lib "WSOCK32.DLL" (ByVal szHostname As String, ByVal HostLen As Long) As Long
Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal szHostname As String) As Long
Private Declare Sub RtlMoveMemory Lib "KERNEL32" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)
  
Private Const WS_VERSION_REQD = &H101
  
Private Function Test(URL As String) As String
    InitializeWinSock
    Test = GetAddressByName(URL) '    敏韬网 www.mintao.net
    TerminateWinSock
End Function
  
Private Function GetAddressByName(strHostname As String)
    Dim lngAddr As Long
    Dim udtHost As HOSTENT
    Dim lngIP As Long
    Dim bteTmp() As Byte
    Dim i As Integer
    Dim strIP As String
  
    lngAddr = gethostbyname(strHostname)
  
    If lngAddr = 0 Then
        MsgBox "Kein Host gefunden."
        GetAddressByName = Null
        Exit Function
    End If
  
    RtlMoveMemory udtHost, lngAddr, LenB(udtHost)
    RtlMoveMemory lngIP, udtHost.hAddrList, 4
  
    ReDim bteTmp(1 To udtHost.hLength)
    RtlMoveMemory bteTmp(1), lngIP, udtHost.hLength
    For i = 1 To udtHost.hLength
        strIP = strIP & bteTmp(i) & "."
    Next
    strIP = Mid$(strIP, 1, Len(strIP) - 1)
  
    GetAddressByName = strIP
End Function
  
Private Sub InitializeWinSock()
    Dim udtWSAD As WSADATA
    Dim lngRet As Long
    lngRet = WSAStartup(WS_VERSION_REQD, udtWSAD)
    If lngRet <> 0 Then
        MsgBox "Winsock.dll konnte nicht initialisiert werden."
        End
    End If
End Sub
'###################
'    敏韬网 www.mintao.net
'###################
Private Sub TerminateWinSock()
    Dim lngRet As Long
    lngRet = WSACleanup()
    If lngRet <> 0 Then
        MsgBox "Fehler " & lngRet & " beim Beenden von Winsock.dll" '    敏韬网 www.mintao.net
        End
    End If
End Sub
  
Private Sub Command1_Click()
    Dim MyURL As String
    MyURL = "www.btoss.com"
    MsgBox MyURL & "的IP地址是:" & Test(MyURL)
End Sub

打印本文 打印本文 关闭窗口 关闭窗口