Soyez le premier à donner votre avis sur cette source.
Snippet vu 17 759 fois - Téléchargée 38 fois
Private Declare Function WSAStartup Lib "wsock32" (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As Long Private Declare Function WSACleanup Lib "wsock32" () As Long Private Declare Function gethostname Lib "wsock32" (ByVal szHost As String, ByVal dwHostLen As Long) As Long Private Declare Function gethostbyname Lib "wsock32" (ByVal HostName As String) As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (xDest As Any, xSource As Any, ByVal nBytes As Long) Private Const MAX_WSADescription As Long = 256 Private Const MAX_WSASYSStatus As Long = 128 Private Const WS_VERSION_REQD As Long = &H101 Private Const IP_SUCCESS As Long = 0 Private Const SOCKET_ERROR As Long = -1 Private Const NO_ERROR = 0 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 Type Hostent hName As Long hAliases As Long hAddrType As Integer hLen As Integer hAddrList As Long End Type ' Renvoie l'adresse IP 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 ' Si GetHostName ne marche pas If gethostname(sHostName, 256) = SOCKET_ERROR Then GetIPAddress = "" Call SocketsCleanup Exit Function End If sHostName = Trim$(sHostName) lpHost = gethostbyname(sHostName) ' Si l'adresse récupérée est vide If lpHost = 0 Then GetIPAddress = "" Call SocketsCleanup Exit Function End If ' On formate l'adresse pour qu'elle soit de la forme xxx.xxx.xxx.xxx CopyMemory HOST, ByVal lpHost, Len(HOST) CopyMemory dwIPAddr, ByVal HOST.hAddrList, 4 ReDim tmpIPAddr(1 To HOST.hLen) CopyMemory tmpIPAddr(1), ByVal dwIPAddr, HOST.hLen For i = 1 To HOST.hLen sIPAddr = sIPAddr & tmpIPAddr(i) & "." Next ' On renvoie la valeur GetIPAddress = Mid$(sIPAddr, 1, Len(sIPAddr) - 1) Call SocketsCleanup End Function ' Vide le socket Public Function SocketsCleanup() SocketsCleanup = IIf(WSACleanup() = 0, True, False) End Function ' Initialise le socket Public Function SocketsInitialize() As Boolean Dim WSAD As WSADATA SocketsInitialize = WSAStartup(WS_VERSION_REQD, WSAD) = IP_SUCCESS End Function
4 août 2006 à 16:04
Cet exemple utilise le mode Console, mais la fonction est prête pour être intégrée dans un projet avec Form.
Module Module1
Sub main()
'La fonction retourne un objet du type System.Net.IPAdress
'On choisira la conversion par '.ToString'
Console.WriteLine(("Address: " + GetFirstIp().ToString))
End Sub
Function GetFirstIp()
Try 'Eh oui, maintenant on gere les erreurs...
' Obtenir un conteneur pour les informations sur l'adresse de l'hôte.
Dim heserver As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName())
' Obtenir le premier IP
GetFirstIp = heserver.AddressList(0)
Catch ex As Exception
'En cas d'érreur (genre pas d'ip, pas de carte réseau...),
'on renvoie le message la définissant
GetFirstIp = ex.Message
End Try
End Function
End Module
20 juin 2006 à 11:20
C'est exactement ce qu'il me falait !
Il me faut l'adresse local IP pour un réseau interne d'une entreprise pour un log! Cela convient donc parfaitement !
Grazias !
Merci MadM@tt
10 févr. 2005 à 17:38
Pour ma part cette fonctionne très bien. Même si effectivement une station peut avoir plusieurs adresses (EBArtSoft)
Cependant il y en a toujours une qui est prioritaire sur les autres... Donc généralement la première adresse locale renvoyée sera la première déclarée dans les paramètres réseau.
Pour le reste je dirai que j'y ait trouvé mon compte... et je n'ai pas eu à le réécrire.
Merci MadM@tt
Bonne prog a tous.
12 sept. 2004 à 15:35
12 sept. 2004 à 15:13
Eventuellement faire un ping d'un serveur style Google, Yahoo, etc... Beaucoup de chance qu'ils répondent.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.