Page 1 sur 1

Récuperer l'adresse IP de l'ordinateur.

Publié : jeu. 06/janv./2022 11:16
par hub73
Bonjour. Bonne et heureuse année à vous,
Auriez vous une portion de code ou une commande qui indique l'adresse IP de l'ordinateur sur lequel est exécuté le programme.
Merci.

Re: Récuperer l'adresse IP de l'ordinateur.

Publié : jeu. 06/janv./2022 14:28
par Marc56
Bonjour,
Bonne Année.

Une machine peut avoir plusieurs carte et une carte plusieurs IP ainsi que plusieurs type (V4 et V6) sans oublier les cartes virtuelles (pour les machines virtuelles)
Il faut donc les lister.
https://www.purebasic.com/documentation ... esses.html

Voir aussi Hostname() qui donne le nom de la machine et toute la lib Network

PS. En ligne de commande, pour avoir le détail des cartes:
Windows: ipconfig /all
linux: ifconfig ou ip a

:wink:

Re: Récuperer l'adresse IP de l'ordinateur.

Publié : mar. 11/janv./2022 16:28
par hub73
Merci Marc pour cette réponse.

Re: Récuperer l'adresse IP de l'ordinateur.

Publié : mer. 12/janv./2022 9:32
par Mesa
Pour l'ip local, il faut voir "ExamineIPAddresses()" dans l"aide de pb, sinon, j'ai 3 codes trouvés dans les forums:

Code : Tout sélectionner

;*****************************CODE 1****************************************
If OpenWindow(0,0,0, 70, 30, "IP",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
	WebGadget(0, -10, -15, 150, 45, "http://ip-whois.net/img_ip1.php")
	
EndIf
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

;*****************************CODE 2****************************************
;GetIp.pbi  V 1.00
;
;Create : 27 Aout 2012
;Update : 27 Aout 2012
;
;OS : Window, Linux, OSx
;PB 4.61 
;
;
;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", "index.php")
	
	File=ReadFile(#PB_Any, "index.php")
	
	If File
		While Eof(File)=0
			Buffer=ReadString(File)
			If FindString(Buffer, "IP :")
				Buffer=Trim(Mid(Buffer, 40))
			EndIf
		Wend
		CloseFile(File)
	EndIf
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


;Get Ip -Test 

;IncludeFile "getip.pbi" 

If InitNetwork() 
	InitISP() 
	
	Debug "Lan IP:" 
	Debug IPString(GetLanIp()) + " Computer : "+ Hostname() 
	
	Debug "" 
	
	Debug "WAN IP:" 
	Debug IPString(GetWanIp()) + " FAI : " + GetISPInfo() 
	Debug GetProxyInfo() 
EndIf 

;******************************CODE 3****************************************

Define NETWORK = #False 
Define TCPIPv4 = #False 
Define TCPIPv6 = #False 
Define INTERNET= #False 

If InitNetwork() 
	Define IP, IPv6$ 
	NETWORK=#True 
	If ExamineIPAddresses(#PB_Network_IPv6) 
		Repeat 
			IP = NextIPAddress() 
			If IP 
				TCPIPv6=#True 
				IPv6$ = IPString(IP, #PB_Network_IPv6) 
				Debug "IPv6: " + IPv6$ 
				FreeIP(IP) 
			EndIf 
		Until IP = 0 
	EndIf 
	Define IP, IPv4$ 
	If ExamineIPAddresses() 
		Repeat 
			IP = NextIPAddress() 
			If IP 
				TCPIPv4=#True 
				IPv4$ = IPString(IP) 
				Debug "IPv4: " + IPv4$ 
			EndIf 
		Until IP = 0 
	EndIf 
Else 
	NETWORK=#False : Debug "Problème matériel ou logiciel sur le PC" 
EndIf 

DataSection 
	Liste_URL: 
	Data.s "http://api.ipify.org/?format=plain" 
	Data.s "http://ifconfig.co/ip" 
	Data.s "http://monip.outils-rezo.info/text"  
	Data.s "https://myip.dnsomatic.com" 
	Data.s "https://ipecho.net/plain" 
	Data.s "https://myexternalip.com/raw" 
	Data.s #Null$ 
EndDataSection 

Define URL$, HttpRequest, StatusCode$, Response$, IPinternet$ 

Restore Liste_URL 

Repeat 
	Read.s URL$ 
	If URL$ <> #Null$ 
		Debug URL$ 
		HttpRequest = HTTPRequest(#PB_HTTP_Get, URL$, "", #PB_HTTP_NoRedirect) 
		If HttpRequest 
			StatusCode$ = Trim(HTTPInfo(HTTPRequest, #PB_HTTP_StatusCode)) 
			Response$   = Trim(HTTPInfo(HTTPRequest, #PB_HTTP_Response)) 
			FinishHTTP(HTTPRequest) 
			Debug "StatusCode: " + StatusCode$ 
			Debug "Response: " + Response$ 
			Debug #Null$ 
			If StatusCode$ = "200" 
				INTERNET = #True 
				IPinternet$ = Response$ 
				Break ; on teste toutes les URL jusqu'a en trouver une qui réponde 
			EndIf 
		EndIf 
	EndIf 
Until URL$ = #Null$ 

Debug "" 
Debug "NETWORK="+NETWORK 
Debug "TCPIPv4="+TCPIPv4 
Debug "TCPIPv6="+TCPIPv6 
Debug "INTERNET="+INTERNET 
Debug "" 
Debug "IPv4="+IPv4$ 
Debug "IPv6="+IPv6$ 
Debug "" 
Debug "IPinternet="+IPinternet$ 

End

Mesa.

Re: Récuperer l'adresse IP de l'ordinateur.

Publié : mer. 12/janv./2022 17:38
par hub73
Merci pour tous ces exemples. J'en ai mis un en pratique qui fonctionne.