Adresse IP local et public et ++ si affinité
Publié : lun. 27/août/2012 20:21
Ça fait un peu bricolage, mais je pense que la plupart des logiciels affichant l'adresse ip public de votre ordinateur font appel à cette technique. Le principe consiste à soumettre à une liste de serveur web une requête en php retournant votre adresse ip public ainsi que des informations sur votre fournisseur d’accès internet et l'utilisation d'un proxy (ou pas).
C'est ce que vous propose l'include GetIp.pbi auquel j'ai ajouté une procédure pour obtenir aussi l'adresse IP local de votre ordinateur.
Pour le moment j'interroge qu'un seul site web pour obtenir l'adresse IP public. je ne manquerais pas de poster une suite à ce code.
L'include GetIp.pbi
Code de test.
Attention : Cet include n'est pas compatible avec la version 4.51 de purebasic.
C'est ce que vous propose l'include GetIp.pbi auquel j'ai ajouté une procédure pour obtenir aussi l'adresse IP local de votre ordinateur.
Pour le moment j'interroge qu'un seul site web pour obtenir l'adresse IP public. je ne manquerais pas de poster une suite à ce code.
L'include GetIp.pbi
Code : Tout sélectionner
;GetIp.pbi V 1.10
;
;Create : 27 Aout 2012
;Update : 19 Mars 2014
;
;OS : Window, Linux, OSx
;PB 4.61 -> 5.22
;
;
;Contributors
; Falsam
;
; Licence : Use As You Like
;
Declare InitISP() ;Lance une requete sur http://www.monip.org
Declare GetLanIp() ;Retourne l'adresse IP de l'ordinateur
Declare GetWanIp() ;Retourne l'adresse internet public
Declare.s GetISPInfo() ;Retourne le fournisseur d'acces internet
Declare.s GetProxyInfo() ;Utilisation d'un proxy oui ou non
Global Buffer.s
;
;Lance une requete sur le site monip.org
Procedure InitISP()
Protected File.l
ReceiveHTTPFile("http://www.monip.org", "info.net")
File=ReadFile(#PB_Any, "info.net")
If File
While Eof(File)=0
Buffer=ReadString(File)
If FindString(Buffer, "IP :")
Buffer=Trim(Mid(Buffer, 40))
EndIf
Wend
CloseFile(File)
EndIf
DeleteFile("info.net")
EndProcedure
;
;Retourne l'adresse IP de l'ordinateur
Procedure GetLanIp()
ExamineIPAddresses()
ProcedureReturn NextIPAddress()
EndProcedure
;
;Retourne l'adresse internet public : Celui de votre Box ou modem cable
Procedure GetWanIp()
Protected Ip.s, IP1.i, IP2.i, IP3.i,IP4.i
IP = StringField(Trim(Mid(Buffer, 1, 15)), 1, "<")
IP1 = Val(StringField(IP, 1, "."))
IP2 = Val(StringField(IP, 2, "."))
IP3 = Val(StringField(IP, 3, "."))
IP4 = Val(StringField(IP, 4, "."))
ProcedureReturn MakeIPAddress(IP1, IP2, IP3, IP4)
EndProcedure
;
;Retourne le fournisseur d'acces internet (Internet Service Provider)
Procedure.s GetISPInfo()
Protected PosStart.i, PosEnd.i
PosStart = FindString(Buffer, "<i>")
PosEnd = FindString(Buffer, "</i>")
ProcedureReturn Trim(Mid(Buffer, PosStart+3, PosEnd-PosStart-3))
EndProcedure
;Proxy ou pas
Procedure.s GetProxyInfo()
Protected PosStart.i, PosEnd.i
PosStart = FindString(Buffer, "<br><br>")
PosEnd = FindString(Buffer, "</font></html>")
ProcedureReturn Trim(Mid(Buffer, PosStart+8, PosEnd-PosStart-10))
EndProcedure
Code : Tout sélectionner
;Get Ip -Test
IncludeFile "getip.pbi"
If InitNetwork()
InitISP()
Debug "Lan IP : " + IPString(GetLanIp()) + " Computer : "+ Hostname()
Debug ""
Debug "WAN IP : " + IPString(GetWanIp()) + " FAI : " + GetISPInfo()
Debug ""
EndIf