Toutes les adresses IP d'un poste local...

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Toutes les adresses IP d'un poste local...

Message par GallyHC »

Bonjour tous,

J'aivais besoin pour un logiciel de connaitre les divers adresses IP local d'un ordinateur. Alors j'ai cherche sur VFrance et trouvais un code que j'ai converti en PureBasic. Je vous le partage ou cas ou cela sert un jour a quelqu'un :).

En fait cela donne les divers adresse IP du poste, genre (12.0.0.1, 192.168.x.x, ect...)

Code : Tout sélectionner

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Structure DBYTE
  unused1.b
  unused2.b
EndStructure

Structure MIB_IPADDRROW
  dwAddr.l
  dwIndex.l
  dwMask.l
  dwBCastAddr.l
  dwReasmSize.l
  unused1.DBYTE
  unused2.DBYTE
EndStructure

Structure MIB_IPADDRTABLE
  dwNumEntries.l
  table.MIB_IPADDRROW[400]
EndStructure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Define i.l
Define result.l
Define number.l
Define ltemps.l = 400
Define IPADDRTABLE.MIB_IPADDRTABLE
Define openlibrary.l = OpenLibrary(#PB_Any, "iphlpapi.dll")

If openlibrary <> 0 And IsLibrary(openlibrary)
  result = CallFunction(openlibrary, "GetNumberOfInterfaces", @number)    
  If result = 0
    For i=0 To number
      result = CallFunction(openlibrary, "GetIpAddrTable", @IPADDRTABLE, @ltemps, #True)
      If IPADDRTABLE\table[i]\dwAddr <> 0
        MessageRequester("", IPString(IPADDRTABLE\table[i]\dwAddr))
      EndIf
    Next i
  EndIf
  CloseLibrary(openlibrary)
EndIf
Cordialement,
GallyHC

PS: En gros c'est comme faire un "ipconfig /all".
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Re: Toutes les adresses IP d'un poste local...

Message par Cls »

Bonjour,

n'est ce pas le but de la fonction ExamineIPAddresses() ?
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

Re: Toutes les adresses IP d'un poste local...

Message par Atlante »

Cls a écrit :Bonjour,

n'est ce pas le but de la fonction ExamineIPAddresses() ?
Il me semble bien que oui ;)
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Toutes les adresses IP d'un poste local...

Message par GallyHC »

Oui cela doit servir a cela visiblement, Le seul truc c'est que je connaissais pas du tout :) et c'est visiblement mal documente (voir le forum anglais).

Cordialement,
GallyHC

Bon j'ai fait un test et je reste avec ma fonction le test est le suivant et il ne trouve qu'une seule IP.

Code : Tout sélectionner

  InitNetwork()
  Define lresult.l

  If ExamineIPAddresses() = #True
    While lresult = 0 
      lresult = NextIPAddress()
      Debug IPString(lresult)
    Wend
  EndIf
Donc vraiment pas probant cette fonction...

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Toutes les adresses IP d'un poste local...

Message par nico »

Ben, le résultat est normal vu ton code, tu ne peux pas avoir plus d'une adresse ip!

Le code devrait ressembler a ça:

Code : Tout sélectionner

  InitNetwork()
  Define lresult.l

  If ExamineIPAddresses() = #True
    Repeat
      lresult = NextIPAddress()
        If lresult <> 0
           Debug IPString(lresult)
        endif
    until lresult = 0
  EndIf
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Toutes les adresses IP d'un poste local...

Message par GallyHC »

nico> Ouep erreur de la part mais dans tout les cas cela n'indique pas "127.0.0.1", mais bon deja j'en ai pas besoin :).

GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Répondre