Page 1 sur 1

obtenir l'adresse IP d'une station

MessagePublié: 11 Oct 2007 à 08:23
par ambh123
un code que j'ai trouve sur le net
que je trouve utile

Code : Tout sélectionner

'// Classe permettant d'obtenir l'adresse IP d'une station

Option Public

Public Const IP_SUCCESS = 0
Private Const WSADescription_Len = 255 ' 256, 0-based
Private Const WSASYS_Status_Len = 127 ' 128, 0-based
Public Const WS_VERSION_REQD = &H101
Public Const MIN_SOCKETS_REQD = 1
Public Const SOCKET_ERROR = -1

Public Type WSADATA
   wVersion As Integer
   wHighVersion As Integer
   szDescription(0 To WSADescription_Len) As Integer
   szSystemStatus(0 To WSASYS_Status_Len) As Integer
   wMaxSockets As Long
   wMaxUDPDG As Long
   dwVendorInfo As Long
End Type

Declare Function gethostbyname Lib "wsock32" (Byval hostname As String) As Long
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (xDest As Any, xSource As Any, Byval nbytes As Long)
Declare Function lstrlenA Lib "kernel32" (lpString As Any) As Long
Declare Function WSAStartup Lib "wsock32" (Byval wVersionRequired As Long, lpWSADATA As WSADATA) As Long
Declare Function WSACleanup Lib "wsock32" () As Long
Declare Function inet_ntoa Lib "wsock32.dll" (Byval addr As Long) As Long
Declare Function lstrcpyA Lib "kernel32" (Byval RetVal As String, Byval Ptr As Long) As Long

Class HostName
   Private HostNameStr As String
   Public IPAddress As String
   Public ErrMsg As String
   Public Error As Integer
   Sub New(host As String)
      If SocketsInitialize() Then
         Me.IPAddress = GetIPFromHostName(host)
         Me.Error = 0
         Me.ErrMsg = ""
         If Not SocketsCleanup Then
            Me.Error = 200
            Me.ErrMsg = "Windows Sockets error occurred in Cleanup."
         End If
      Else
         Me.Error = 100
         Me.ErrMsg = "Windows Sockets for 32 bit Windows is not successfully responding."
         Me.IPAddress = ""
      End If
   End Sub
End Class

Private Function SocketsInitialize() As Integer
   Dim WSAD As WSADATA
   Dim success As Long
   SocketsInitialize = (WSAStartup(WS_VERSION_REQD, WSAD) = IP_SUCCESS)
End Function

Private Function SocketsCleanup() As Integer
   If WSACleanup() <> 0 Then
      SocketsCleanup = False
   Else
      SocketsCleanup = True
   End If
End Function

Private Function GetIPFromHostName(Byval sHostName As String) As String
   Dim ptrHosent As Long
   Dim ptrName As Long
   Dim ptrAddress As Long
   Dim ptrIPAddress As Long
   Dim dwAddress As Long
   ptrHosent = gethostbyname(sHostName & Chr(0))
   If ptrHosent <> 0 Then
      ptrName = ptrHosent
      ptrAddress = ptrHosent + 12
      CopyMemory ptrAddress, Byval ptrAddress, 4
      CopyMemory ptrIPAddress, Byval ptrAddress, 4
      CopyMemory dwAddress, Byval ptrIPAddress, 4
      GetIPFromHostName = GetIPFromAddress(dwAddress)
   End If
End Function

Public Function GetIPFromAddress(Address As Long) As String
   Dim ptrString As Long
   ptrString = inet_ntoa(Address)
   GetIPFromAddress = GetStrFromPtrA(ptrString)
End Function

Public Function GetStrFromPtrA(Byval lpszA As Long) As String
   GetStrFromPtrA = String$(lstrlenA(Byval lpszA), 0)
   Call lstrcpyA(Byval GetStrFromPtrA, Byval lpszA)
End Function


Edit Webmaster => Source http://www.breakingpar.com

MessagePublié: 11 Oct 2007 à 08:50
par Michael DELIQUE
salut

ambh123 Si c'est un code que tu as trouvé merci d'en indiquer l'auteur et la provenance

MessagePublié: 15 Oct 2007 à 17:05
par ambh123
desole mais je ne me rappelle plus
ca fait deja quelques semaines

MessagePublié: 15 Oct 2007 à 17:37
par JYR