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

Codes specifiques à Windows
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

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

Message 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.
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

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

Message 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:
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

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

Message par hub73 »

Merci Marc pour cette réponse.
Mesa
Messages : 1098
Inscription : mer. 14/sept./2011 16:59

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

Message 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.
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

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

Message par hub73 »

Merci pour tous ces exemples. J'en ai mis un en pratique qui fonctionne.
Répondre