用VB怎么样才能获取自已上因特网的IP地址(我是用路由器上的网)本地IP地址是192.168.0.5

解决方案 »

  1.   

    用Socket就可以获取本地的所有IP地址!
      

  2.   

    直接访问是不行的,你可以通过一些可以获得IP的网站来得到在internet上面的IP地址,例如这个网站:
    http://compux.xicp.net/getmyip.aspx还可以通过下面的链接提供的DLL和范例来获得外网的IP地址:
    http://www.ostrosoft.com/OIT/external_ip.asp不过采用的基本也是上面的方法。
      

  3.   

    你可以结贴了!!!
    试试这个吧!!!
        
        Private Const MAX_IP = 255
        Private Type IPINFO
         dwAddr As Long
         dwIndex As Long
         dwMask As Long
         dwBCastAddr As Long
         dwReasmSize As Long
         unused1 As Integer
         unused2 As Integer
        End Type
        Private Type MIB_IPADDRTABLE
         dEntrys As Long
         mIPInfo(MAX_IP) As IPINFO
        End Type
        Private Type IP_Array
         mBuffer As MIB_IPADDRTABLE
         BufferLen As Long
        End Type
        Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
        Private Declare Function GetIpAddrTable Lib "IPHlpApi" (pIPAdrTable As Byte, pdwSize As Long, ByVal Sort As Long) As Long
        Dim strIP As String
         Private Sub Form_Load()
         Start
         MsgBox strIP
    End Sub     
        Private Function ConvertAddressToString(longAddr As Long) As String
         Dim myByte(3) As Byte
         Dim Cnt As Long
         CopyMemory myByte(0), longAddr, 4
         For Cnt = 0 To 3
         ConvertAddressToString = ConvertAddressToString + CStr(myByte(Cnt)) + "."
         Next Cnt
         ConvertAddressToString = Left$(ConvertAddressToString, Len(ConvertAddressToString) - 1)
        End Function
         
        Public Sub Start()
         Dim Ret As Long, Tel As Long
         Dim bBytes() As Byte
         Dim Listing As MIB_IPADDRTABLE
         On Error GoTo END1
         GetIpAddrTable ByVal 0&, Ret, True
         If Ret <= 0 Then Exit Sub
         ReDim bBytes(0 To Ret - 1) As Byte
         GetIpAddrTable bBytes(0), Ret, False
         CopyMemory Listing.dEntrys, bBytes(0), 4
         strIP = "你机子上有 " & Listing.dEntrys & " 个 IP 地址。" & vbCrLf
         strIP = strIP & "------------------------------------------------" & vbCrLf & vbCrLf
         For Tel = 0 To Listing.dEntrys - 1
         CopyMemory Listing.mIPInfo(Tel), bBytes(4 + (Tel * Len(Listing.mIPInfo(0)))), Len(Listing.mIPInfo(Tel))
         strIP = strIP & "IP 地址 : " & ConvertAddressToString(Listing.mIPInfo(Tel).dwAddr) & vbCrLf
         strIP = strIP & "子网掩码 : " & ConvertAddressToString(Listing.mIPInfo(Tel).dwMask) & vbCrLf
         strIP = strIP & "广播地址 : " & ConvertAddressToString(Listing.mIPInfo(Tel).dwBCastAddr) & vbCrLf
         strIP = strIP & "------------------------------------------------" & vbCrLf
         Next
         Exit Sub
    END1:
         MsgBox "ERROR"
        End Sub
      

  4.   

    to HBJMSHOP() :
    如果是直接拨号上网,你的代码是正确的,如果通过路由上网。获得的还是
    内网地址。