DNS Inside Out
Tutorial for the Visual Basic programmer
http://www.vbip.com/protocols/dns/vb-dns-tutorial-01.aspResolving a domain name into an IP address
http://www.vbip.com/protocols/dns/vb-dns-tutorial-12.asp

解决方案 »

  1.   

    我这里来点详细的,供大家参考:通过主机名得到一个IP地址 
    '转自编程先锋 http://wlbookwl.myrice.com 站长:小黑侠 
    '首先声明是转抄的一篇外国的! 
    ' #VBIDEUtils#************************************************************ 
    ' * Programmer Name : Waty Thierry 
    ' * Web Site : www.geocities.com/ResearchTriangle/6311/ 
    ' * E-Mail : [email protected] 
    ' * Module Name : IP_Module 
    ' * Module Filename : IP.bas 
    ' ********************************************************************** 
    ' * Comments : 
    ' * Find IP address ginving the hostname 
    ' ********************************************************************** 'Here's sample code for gethostbyname() 'Add a textbox (Text1) And a Command button (Command1) To a New form And use the following code: 'Usage: Fill in the textbox with the name you want to resolve and click the command button to resolve the name. Private Const WS_VERSION_REQD = &H101 
    Private Const WS_VERSION_MAJOR = WS_VERSION_REQD \ &H100 And &HFF& 
    Private Const WS_VERSION_MINOR = WS_VERSION_REQD And &HFF& 
    Private Const MIN_SOCKETS_REQD = 1 
    Private Const SOCKET_ERROR = -1 
    Private Const WSADescription_Len = 256 
    Private Const WSASYS_Status_Len = 128 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 WSADescription_Len) As Byte 
    szSystemStatus(0 To WSASYS_Status_Len) 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&, lpWSAData As WSADATA) As Long 
    Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long 
    Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal hostname$) As Long 
    Private Declare Sub RtlMoveMemory Lib "KERNEL32" (hpvDest As Any, ByVal hpvSource&, ByVal cbCopy&) ' #VBIDEUtils#************************************************************ 
    ' * Programmer Name : Waty Thierry 
    ' * Web Site : www.geocities.com/ResearchTriangle/6311/ 
    ' * E-Mail : [email protected] 
    ' * Module Name : IP_Module 
    ' * Module Filename : IP.bas 
    ' ********************************************************************** 
    ' * Comments : 
    ' * Find IP address ginving the hostname 
    ' ********************************************************************** Function hibyte(ByVal wParam As Integer) hibyte = wParam \ &H100 And &HFF& End Function Function lobyte(ByVal wParam As Integer) lobyte = wParam And &HFF& End Function Sub SocketsInitialize() Dim WSAD As WSADATA 
    Dim iReturn As Integer 
    Dim sLowByte As String, sHighByte As String, sMsg As String iReturn = WSAStartup(WS_VERSION_REQD, WSAD) If iReturn <> 0 Then 
    MsgBox "Winsock.dll is not responding." 
    End 
    End If If lobyte(WSAD.wversion) < WS_VERSION_MAJOR Or (lobyte(WSAD.wversion) = WS_VERSION_MAJOR And hibyte(WSAD.wversion) < WS_VERSION_MINOR) Then 
    sHighByte = Trim$(Str$(hibyte(WSAD.wversion))) 
    sLowByte = Trim$(Str$(lobyte(WSAD.wversion))) 
    sMsg = "Windows Sockets version " & sLowByte & "." & sHighByte 
    sMsg = sMsg & " is not supported by winsock.dll " 
    MsgBox sMsg 
    End 
    End If If WSAD.iMaxSockets < MIN_SOCKETS_REQD Then 
    sMsg = "This application requires a minimum of " 
    sMsg = sMsg & Trim$(Str$(MIN_SOCKETS_REQD)) & " supported sockets." 
    MsgBox sMsg 
    End 
    End If End Sub Sub SocketsCleanup() 
    Dim lReturn As Long lReturn = WSACleanup() If lReturn <> 0 Then 
    MsgBox "Socket error " & Trim$(Str$(lReturn)) & " occurred in Cleanup " 
    End 
    End If End Sub Sub Form_Load() SocketsInitialize End Sub Private Sub Form_Unload(Cancel As Integer) SocketsCleanup End Sub Private Sub Command1_click() 
    Dim hostent_addr As Long 
    Dim host As HOSTENT 
    Dim hostip_addr As Long 
    Dim temp_ip_address() As Byte 
    Dim i As Integer 
    Dim ip_address As String hostent_addr = gethostbyname(Text1) If hostent_addr = 0 Then 
    MsgBox "Can't resolve name." 
    Exit Sub 
    End If RtlMoveMemory host, hostent_addr, LenB(host) 
    RtlMoveMemory hostip_addr, host.hAddrList, 4 ReDim temp_ip_address(1 To host.hLength) 
    RtlMoveMemory temp_ip_address(1), hostip_addr, host.hLength For i = 1 To host.hLength 
    ip_address = ip_address & temp_ip_address(i) & "." 
    Next 
    ip_address = Mid$(ip_address, 1, Len(ip_address) - 1) MsgBox ip_address End Sub  
    资料整理:编程先锋 http://wlbookwl.myrice.com 站长:小黑侠 
      

  2.   

    再次感谢 saucer(思归) ,你提供的资料我也看了,很有价值!请等待分数相赠!