Avatar billede henrikudsen Nybegynder
08. juli 2001 - 22:37 Der er 8 kommentarer og
1 løsning

Hvordan finder jeg min eksterne IP Adresse?

Er der nogen i dette kloge forum der ved hvordan jeg finder min eksterne IP Adresse? Nu ikke spise mig af med Winsock.LocalIP, det er ikke den jeg er ude efter, det SKAL være den eksterne. Med andre ord jeg vil ha\' samme IP som jeg får vist ved f.eks. at gå ind på www.myip.dk
Avatar billede bbs Nybegynder
08. juli 2001 - 22:42 #1
<td><SPAN class=\"contentbold\">Din globale IP-adresse:</SPAN></td>
                <td align=\"right\"><SPAN class=\"content\"></span></td>

Burde virke...
Avatar billede snowball Novice
08. juli 2001 - 22:45 #2
bbs: Prøv lige og se hvilken kategori spørgsmålet er stillet i !!!

Snowball
Avatar billede sjh Nybegynder
08. juli 2001 - 22:48 #3
\'----------------------------------- Module1 -----------------------------------
Option Explicit

Public Const MAX_WSADescription = 256
Public Const MAX_WSASYSStatus = 128
Public Const ERROR_SUCCESS      As Long = 0
Public Const WS_VERSION_REQD    As Long = &H101
Public Const WS_VERSION_MAJOR    As Long = WS_VERSION_REQD \\ &H100 And &HFF&
Public Const WS_VERSION_MINOR    As Long = WS_VERSION_REQD And &HFF&
Public Const MIN_SOCKETS_REQD    As Long = 1
Public Const SOCKET_ERROR        As Long = -1

Public Type HOSTENT
  hName      As Long
  hAliases  As Long
  hAddrType  As Integer
  hLen      As Integer
  hAddrList  As Long
End Type

Public Type WSADATA
  wVersion      As Integer
  wHighVersion  As Integer
  szDescription(0 To MAX_WSADescription)  As Byte
  szSystemStatus(0 To MAX_WSASYSStatus)    As Byte
  wMaxSockets  As Integer
  wMaxUDPDG    As Integer
  dwVendorInfo  As Long
End Type

Public Declare Function WSAGetLastError Lib \"WSOCK32.DLL\" () As Long
Public Declare Function WSAStartup Lib \"WSOCK32.DLL\" _
  (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As Long
Public Declare Function WSACleanup Lib \"WSOCK32.DLL\" () As Long
Public Declare Function gethostname Lib \"WSOCK32.DLL\" _
  (ByVal szHost As String, ByVal dwHostLen As Long) As Long
Public Declare Function gethostbyname Lib \"WSOCK32.DLL\" _
  (ByVal szHost As String) As Long
Public Declare Sub CopyMemory Lib \"kernel32\" Alias \"RtlMoveMemory\" _
  (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)


Public Function GetIPAddress() As String

  Dim sHostName    As String * 256
  Dim lpHost    As Long
  Dim HOST      As HOSTENT
  Dim dwIPAddr  As Long
  Dim tmpIPAddr() As Byte
  Dim i        As Integer
  Dim sIPAddr  As String
 
  If Not SocketsInitialize() Then
      GetIPAddress = \"\"
      Exit Function
  End If

  If gethostname(sHostName, 256) = SOCKET_ERROR Then
      GetIPAddress = \"\"
      MsgBox \"Windows Sockets error \" & Str$(WSAGetLastError()) & _
              \" has occurred. Unable to successfully get Host Name.\"
      SocketsCleanup
      Exit Function
  End If
   
  sHostName = Trim$(sHostName)
  lpHost = gethostbyname(sHostName)
   
  If lpHost = 0 Then
      GetIPAddress = \"\"
      MsgBox \"Windows Sockets are not responding. \" & _
              \"Unable to successfully get Host Name.\"
      SocketsCleanup
      Exit Function
  End If

  CopyMemory HOST, lpHost, Len(HOST)
  CopyMemory dwIPAddr, HOST.hAddrList, 4

  ReDim tmpIPAddr(1 To HOST.hLen)
  CopyMemory tmpIPAddr(1), dwIPAddr, HOST.hLen

  For i = 1 To HOST.hLen
      sIPAddr = sIPAddr & tmpIPAddr(i) & \".\"
  Next

  GetIPAddress = Mid$(sIPAddr, 1, Len(sIPAddr) - 1)
 
  SocketsCleanup
   
End Function


Public Function GetIPHostName() As String

    Dim sHostName As String * 256
   
    If Not SocketsInitialize() Then
        GetIPHostName = \"\"
        Exit Function
    End If
   
    If gethostname(sHostName, 256) = SOCKET_ERROR Then
        GetIPHostName = \"\"
        MsgBox \"Windows Sockets error \" & Str$(WSAGetLastError()) & _
                \" has occurred.  Unable to successfully get Host Name.\"
        SocketsCleanup
        Exit Function
    End If
   
    GetIPHostName = Left$(sHostName, InStr(sHostName, Chr(0)) - 1)
    SocketsCleanup

End Function


Public Function HiByte(ByVal wParam As Integer) As Byte

  HiByte = (wParam And &HFF00&) \\ (&H100)

End Function


Public Function LoByte(ByVal wParam As Integer) As Byte

  LoByte = wParam And &HFF&

End Function


Public Sub SocketsCleanup()

    If WSACleanup() <> ERROR_SUCCESS Then
        MsgBox \"Socket error occurred in Cleanup.\"
    End If
   
End Sub

Public Function SocketsInitialize() As Boolean

  Dim WSAD As WSADATA
  Dim sLoByte As String
  Dim sHiByte As String
 
  If WSAStartup(WS_VERSION_REQD, WSAD) <> ERROR_SUCCESS Then
      MsgBox \"The 32-bit Windows Socket is not responding.\"
      SocketsInitialize = False
      Exit Function
  End If
 
 
  If WSAD.wMaxSockets < MIN_SOCKETS_REQD Then
        MsgBox \"This application requires a minimum of \" & _
                CStr(MIN_SOCKETS_REQD) & \" supported sockets.\"
       
        SocketsInitialize = False
        Exit Function
    End If
 
 
  If LoByte(WSAD.wVersion) < WS_VERSION_MAJOR Or _
    (LoByte(WSAD.wVersion) = WS_VERSION_MAJOR And _
      HiByte(WSAD.wVersion) < WS_VERSION_MINOR) Then
     
      sHiByte = CStr(HiByte(WSAD.wVersion))
      sLoByte = CStr(LoByte(WSAD.wVersion))
     
      MsgBox \"Sockets version \" & sLoByte & \".\" & sHiByte & _
            \" is not supported by 32-bit Windows Sockets.\"
     
      SocketsInitialize = False
      Exit Function
     
  End If

  SocketsInitialize = True
       
End Function
\'----------------------------------- Module1 -----------------------------------

\'------------------------------------ Form1 ------------------------------------
Private Sub Form_Load()

Me.Caption = GetIPAddress()

End Sub
\'------------------------------------ Form1 ------------------------------------
Avatar billede henrikudsen Nybegynder
09. juli 2001 - 03:06 #4
sjh ... tak for det, MEN den retunere blot min interne adresse ganske som Winsock kontrollen også gør ... det er jeg i og for sig ligeglad med :). Jeg skal bruge den eksterne ip adresse, dvs. ikke den der \"bare\" identificere mig på et LAN.
Avatar billede sjh Nybegynder
09. juli 2001 - 16:20 #5
henrikudsen >>Er det \"255.255.255.255\" du vil eller er det \"p000-000.ppp.get2net.dk\" du vil have eller hvad.
Avatar billede henrikudsen Nybegynder
09. juli 2001 - 16:30 #6
Det er \"255.255.255.255\" :)
Avatar billede sjh Nybegynder
09. juli 2001 - 20:27 #7
henrikudsen >>Hvis jeg bruger koden \"GetIPAddress()\" og går ind på \"www.myip.dk\" og ser så står den samme ip-adresse der.????????? :-)
Avatar billede henrikudsen Nybegynder
09. juli 2001 - 21:59 #8
Weird, det gør jeg ikke her?! Men så må der jo være noget helt andet galt ... tak for hjælpen om ikke andet :)
Avatar billede sjh Nybegynder
18. september 2001 - 17:28 #9
henrikudsen >> Jeg fandt lige en ny løsing til dig.

\'Download 100 byte og tag det der står i \"<title>Your IP: 255.255.255.255</title>\". ;)

\'--------------------------------- Form1 ---------------------------------
Private Declare Function InternetOpen Lib \"wininet\" Alias \"InternetOpenA\" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetCloseHandle Lib \"wininet\" (ByVal hInet As Long) As Integer
Private Declare Function InternetReadFile Lib \"wininet\" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib \"wininet\" Alias \"InternetOpenUrlA\" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long

Private Sub Form_Load()
Dim hOpen As Long
Dim hFile As Long
Dim Ret As Long
Dim lPos As Long
Dim sBuffer As String
Dim YourIP As String

  sBuffer = Space(100)
  hOpen = InternetOpen(\"Your IP\", 1, vbNullString, vbNullString, 0)
  hFile = InternetOpenUrl(hOpen, \"http://www.myip.dk/\", vbNullString, ByVal 0&, &H80000000, ByVal 0&)
  InternetReadFile hFile, sBuffer, 100, Ret
  InternetCloseHandle hFile
  InternetCloseHandle hOpen
  lPos = InStr(1, LCase(sBuffer), LCase(\"Your IP: \"))
  If lPos > 0 Then
    lPos = lPos + Len(\"Your IP: \")
    YourIP = Mid$(sBuffer, lPos, InStr(lPos, sBuffer, \"<\") - lPos)
  End If
MsgBox YourIP
End Sub
\'--------------------------------- Form1 ---------------------------------
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester