Problème avec IPAddresses
-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
Problème avec IPAddresses
Salut,
J'esseye de recuperer mon ip, le problème c'est que au lieu de me retourner mon ip il me retourne l'ip sur mon reseau local c'est a dire celle du routeur "192.168.x.x".
Pouvez vous me dire comment recuperer la vrai adresse ip utiliser sur le web ?
Merci d'avance pour votre réponse.
P.S.: quelqu'un sait egalement comment recuperer l'adresse physique ? (ou l'adresse mac si vous preferer)
J'esseye de recuperer mon ip, le problème c'est que au lieu de me retourner mon ip il me retourne l'ip sur mon reseau local c'est a dire celle du routeur "192.168.x.x".
Pouvez vous me dire comment recuperer la vrai adresse ip utiliser sur le web ?
Merci d'avance pour votre réponse.
P.S.: quelqu'un sait egalement comment recuperer l'adresse physique ? (ou l'adresse mac si vous preferer)
J'ai une méthode de bricolo du dimanche, mais elle fonctionne
tu ouvre un site d'IP ex: WhatismyIP.com , tu charge la page en mémoire et tu extrait ton IP, le problème est que tu dépends d'un site, donc si le site change, ton code ne fonctionnera certainement plus. j'ai plus mon code sous la main, mais une recherche sur le forum te permetera certainement de voir le sujet déjà aborder.
@++

tu ouvre un site d'IP ex: WhatismyIP.com , tu charge la page en mémoire et tu extrait ton IP, le problème est que tu dépends d'un site, donc si le site change, ton code ne fonctionnera certainement plus. j'ai plus mon code sous la main, mais une recherche sur le forum te permetera certainement de voir le sujet déjà aborder.
@++
-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
Oui donc j'ai trouver un code sur le forum :
J'ai essyer de recuperer l'ip avec juste les procedure qui font appel au site pour l'ip mais bon sa marche pas... tu pourrais pas me faire sa en vitesse ? car je doit t'avouer que je suis perdu... (peut etre parce que c'est le matin et que je dort encore ? lol)
Merci d'avance pour ton aide.
Enumeration
#String_0
#String_1
#String_2
#String_3
#String_4
#String_5
#String_6
#Button_0
#Text_0
#Text_1
#Text_2
#Text_3
#Text_4
#Text_5
#Text_6
#Button_2
#icone_actif
#icone_arret
#image_0
EndEnumeration
#INTERNET_SERVICE_FTP =1
#INTERNET_OPEN_TYPE_DIRECT =1
#FTP_PORT =21
#FTP_TRANSFER_ASCII =1
#FTP_TRANSFER_BINARY =2
Global Nom_Serveur.s,Nom_Utilisateur.s,Mot_De_Passe.s,Nom_Fichier_Local.s,Nom_Fichier_Distant.s,Frequence.s,Nom_Hote.s
Global freq.l , etat_prog.b ,adresse_ip.s , Memoire_adresse_ip.s
Procedure.s Encrypt(str.s) ; pour le codage du mot de passe ftp dans les prefs
DefType.l i, C
DefType.s tmp, erg
For i = 1 To Len (str)
tmp = Mid (str, i, 1)
C = Asc (tmp) + 15
If C > 255
C = C - 255
EndIf
erg = erg + Chr (C)
Next
ProcedureReturn erg
EndProcedure
Procedure.s Decrypt(str.s)
DefType.l i, C
DefType.s tmp, erg
For i = 1 To Len (str)
tmp = Mid (str, i, 1)
C = Asc (tmp) - 15
If C < 0
C = C + 255
EndIf
erg = erg + Chr (C)
Next
ProcedureReturn erg
EndProcedure
Procedure lecture_preference()
If OpenPreferences ( "dyn_ip.pref" )
Nom_Hote = ReadPreferenceString ( "Nom_Hote" , "Erreur ! Pas de données ..." )
Nom_Serveur = ReadPreferenceString ( "Nom_Serveur" , "Erreur ! Pas de données ..." )
Nom_Utilisateur = ReadPreferenceString ( "Nom_Utilisateur" , "Erreur ! Pas de données ..." )
tempo.s = ReadPreferenceString ( "Mot_De_Passe" , "Erreur ! Pas de données ..." )
Mot_De_Passe = Decrypt(tempo)
Nom_Fichier_Local = ReadPreferenceString ( "Nom_Fichier_Local" , "Erreur ! Pas de données ..." )
Nom_Fichier_Distant = ReadPreferenceString ( "Nom_Fichier_Distant" , "Erreur ! Pas de données ..." )
Frequence = ReadPreferenceString ( "Frequence" , "Erreur ! Pas de données ..." )
freq = Val (Frequence)
If freq = 0
freq = 60
Frequence = "60"
EndIf
ClosePreferences ()
Else
MessageRequester ( " Erreur" , "Pas de fichier de Configuration : " + Chr (34) + " proto_dyn_ip.pref " + Chr (34) + "" , #MB_OK|#MB_ICONERROR )
EndIf
SetGadgetText ( #String_6 ,Nom_Hote) ; Remplissage des champs de la fenetre
SetGadgetText ( #String_0 ,Nom_Serveur)
SetGadgetText ( #String_1 ,Nom_Utilisateur)
SetGadgetText ( #String_2 ,Mot_De_Passe)
SetGadgetText ( #String_3 ,Nom_Fichier_Local)
SetGadgetText ( #String_4 ,Nom_Fichier_Distant)
SetGadgetText ( #String_5 ,Frequence)
EndProcedure
Procedure ecriture_preference()
If CreatePreferences ( "dyn_ip.pref" )
WritePreferenceString ( "Nom_Hote" , GetGadgetText ( #String_6 ))
WritePreferenceString ( "Nom_Serveur" , GetGadgetText ( #String_0 ))
WritePreferenceString ( "Nom_Utilisateur" , GetGadgetText ( #String_1 ))
tempo.s = Encrypt( GetGadgetText ( #String_2 )) ; Encodage du mot de passe
WritePreferenceString ( "Mot_De_Passe" , tempo.s )
WritePreferenceString ( "Nom_Fichier_Local" , GetGadgetText ( #String_3 ))
WritePreferenceString ( "Nom_Fichier_Distant" , GetGadgetText ( #String_4 ))
entier.l = Val ( GetGadgetText ( #String_5 )) ; Convertion du champ frequence en entier !
WritePreferenceString ( "Frequence" , Str (entier))
EndIf
EndProcedure
Procedure.s OpenURL(Url.s, OpenType.b)
isLoop.b=1
INET_RELOAD.l=$80000000
hInet.l=0: hURL.l=0: Bytes.l=0
Buffer.s= Space (2048 )
hInet = InternetOpen_ ( "PB@INET" , OpenType, #Null , #Null , 0)
hURL = InternetOpenUrl_ (hInet, Url, #Null , 0, INET_RELOAD, 0)
Repeat
Delay (1)
InternetReadFile_ (hURL, @Buffer, Len (Buffer), @Bytes)
If Bytes = 0
isLoop=0
Else
res.s = res + Left (Buffer, Bytes)
EndIf
Until isLoop=0
InternetCloseHandle_ (hURL)
InternetCloseHandle_ (hInet)
ProcedureReturn res
EndProcedure
Procedure.s Recup_Ip()
URL$ = "http://www.whatismyip.com/" ; Adresse http://www.whatismyip.com/ ou http://www.ipaddressworld.com
HTML$ = OpenURL(URL$, 1) ; Appel de la procedure OpenURL et enregistrement de la page dans HTML$
;OpenFile(1,"c:\sauv_page_ip.txt") ; Utile pour la mise au point du filtre de recherche de l'IP
;WriteString(HTML$)
;CloseFile(1)
debut = FindString (HTML$, "<TITLE>Your ip is" ,1) + 17 ;
fin = FindString (HTML$, "WhatIsMyIP.com</TITLE>" ,1) ; Filtre pour trouver l'adresse ip dans la page html
ip$ = Mid (HTML$,debut,(fin - debut)) ; Attention filtre pour http://www.whatismyip.com/
; different si un autre site ! !
ProcedureReturn ip$
EndProcedure
Procedure Creation_Page_Perso(localfile.s,ip.s)
date$ = FormatDate ( "%dd/%mm/%yyyy" , Date ()) ; Creation et mise en forme de la chaine date$
heure$ = FormatDate ( "%hh:%ii:%ss" , Date ()) ; Creation et mise en forme de la chaine heure$
donnees$ = "Adresse IP de " + Nom_Hote + " est : " + ip + " Mise à jour le :   " + date$ + " à : " + heure$
HTML$= "<html><head><title> Adresse IP </title></head><body><p>" + donnees$ + "</p></body></html>"
OpenFile (1,localfile)
WriteString (HTML$)
CloseFile (1)
EndProcedure
Procedure.s Envoie_Ftp(Proxy.s,ProxyBypass.s,ServerName.s,UserName.s,Password.s,localfile.s,remotefile.s)
#INTERNET_SERVICE_FTP =1
#INTERNET_OPEN_TYPE_DIRECT =1
#FTP_PORT =21
#FTP_TRANSFER_ASCII =1
#FTP_TRANSFER_BINARY =2
hInternet= InternetOpen_ ( "FTP" , #INTERNET_OPEN_TYPE_DIRECT ,Proxy,ProxyBypass,0)
If hInternet
hConnect= InternetConnect_ (hInternet,ServerName, #FTP_PORT ,UserName,Password, #INTERNET_SERVICE_FTP ,0,0)
If hConnect
If FtpPutFile_ (hConnect,localfile,remotefile, #FTP_TRANSFER_ASCII ,0)
;MessageRequester("","File has been sent",0)
message.s = " Transfert du fichier OK !"
Else
;MessageRequester("Error", "Failure while sending file...",0)
message.s = " Erreur, Probleme pendand l'envoie du fichier..."
EndIf
Else
;MessageRequester("Error", "Couldn't get a connection to the server!",0)
message.s = " Erreur, Impossible de se connecter au serveur ftp..."
EndIf
InternetCloseHandle_ (hInternet)
Else
;MessageRequester("Error", "Internet isn't reachable.",0)
message.s = " Erreur , Pas de connexion a internet ..."
EndIf
ProcedureReturn message
EndProcedure
Procedure mise_a_jour()
adresse_ip = Recup_Ip()
SysTrayIconToolTip(0, "Ip Publique = " + adresse_ip)
SetWindowTitle (0, "Actif ! freq = " + Str (freq) + " mn" + " Ip Publique = " + adresse_ip)
If adresse_ip <> Memoire_adresse_ip
Creation_Page_Perso(Nom_Fichier_Local,adresse_ip)
Envoie_Ftp( "" , "" ,Nom_Serveur,Nom_Utilisateur,Mot_De_Passe,Nom_Fichier_Local,Nom_Fichier_Distant)
Memoire_adresse_ip = adresse_ip
EndIf
EndProcedure
;-------------------------------------------- Début de Programme --------------------------------
id_icone_actif = LoadImage ( #icone_actif , "icone_actif.ico" ) ; Chargement des icones pour le systray
id_icone_arret = LoadImage ( #icone_arret , "icone_arret.ico" )
;------------------------------------------ Creation de la fenetre ----------------------------
If OpenWindow (0, 346, 307, 364, 292, #PB_Window_MinimizeGadget|#PB_Window_SystemMenu , "Dyn_IP" )
AddSysTrayIcon (0, WindowID (),id_icone_arret )
SysTrayIconToolTip(0, "Dyn_IP" )
If CreatePopupMenu (0)
MenuItem (1, "Restaurer" )
EndIf
If CreateGadgetList ( WindowID ())
StringGadget ( #String_0 , 10, 40, 210, 20, "" )
StringGadget ( #String_1 , 10, 70, 210, 20, "" )
StringGadget ( #String_2 , 10, 100, 210, 20, "" , #PB_String_Password ) ;#PB_String_Password
StringGadget ( #String_3 , 10, 130, 210, 20, "" )
StringGadget ( #String_4 , 10, 160, 210, 20, "" )
StringGadget ( #String_5 , 10, 190, 210, 20, "" )
StringGadget ( #String_6 , 10, 10, 210, 20, "" )
ButtonGadget ( #Button_0 , 10, 220, 210, 40, "Enregistrer" )
ButtonGadget ( #Button_2 , 230, 220, 120, 40, "Démarrer" )
TextGadget ( #Text_0 , 240, 40, 130, 20, "Adresse du serveur ftp" )
TextGadget ( #Text_1 , 240, 70, 100, 20, "Nom d'utilisateur" )
TextGadget ( #Text_2 , 240, 100, 80, 20, "Mot de passe" )
TextGadget ( #Text_3 , 240, 130, 120, 20, "Nom du fichier local" )
TextGadget ( #Text_4 , 240, 160, 110, 20, "Nom du fichier distant" )
TextGadget ( #Text_5 , 240, 190, 110, 20, "freq mise à jour (mn)" )
TextGadget ( #Text_6 , 240, 10, 80, 20, "Nom de l'hote" )
ImageGadget ( #image_0 ,320,2,32,32,id_icone_arret)
EndIf
If CreateMenu (1 , WindowID ())
MenuTitle ( "Menu" )
MenuItem (2, " Quitter" )
EndIf
lecture_preference() ; Remplissage des champs de la fenetre
;- ------------------------------ Boucle de gestion des evenements --------------------------------
Repeat
Event = WaitWindowEvent ()
Select Event
Case #PB_Event_SysTray
If EventType () = #PB_EventType_RightClick
DisplayPopupMenu (0, WindowID ())
If IsIconic_ ( WindowID (0))
;cette ligne est utilisée pour l'effet d'agrandissement
ShowWindow_ ( WindowID (0), #SW_MINIMIZE )
;Une tempo est nécessaire sinon ça ne fonctionne pas à tous les coups
Delay (250)
ShowWindow_ ( WindowID (0), #SW_RESTORE )
EndIf
EndIf
Case #WM_SIZE
If IsIconic_ ( WindowID (0))
ShowWindow_ ( WindowID (0), #SW_HIDE )
EndIf
Case #PB_EventGadget
GadgetID = EventGadgetID ()
If GadgetID = #String_0
ElseIf GadgetID = #String_1
ElseIf GadgetID = #String_2
ElseIf GadgetID = #String_3
ElseIf GadgetID = #String_4
ElseIf GadgetID = #Button_0 ; bouton Enregistrer
ecriture_preference()
lecture_preference()
ElseIf GadgetID = #Button_2 ; Bouton démarrer
If GetGadgetText ( #Button_2 )= "Démarrer"
SetGadgetText ( #Button_2 , "Arrêter" )
SetWindowTitle (0, "Dyn_IP Actif ! freq = " + Str (freq) + " mn" )
ChangeSysTrayIcon (0,id_icone_actif)
ImageGadget ( #image_0 ,320,2,32,32,id_icone_actif)
lecture_preference()
mise_a_jour()
StartTimer(0,freq*60000,@mise_a_jour()) ; Demarrage du Timer sur la procedure mise_a_jour
Else
EndTimer(0) ; Arret du Timer
SetGadgetText ( #Button_2 , "Démarrer" )
SetWindowTitle (0, "Dyn_IP Arrêté !" )
ChangeSysTrayIcon (0,id_icone_arret)
ImageGadget ( #image_0 ,320,2,32,32,id_icone_arret)
EndIf
EndIf
Case #PB_EventMenu
menu_id = EventMenuID ()
If menu_id = 2
End
EndIf
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
End
J'ai essyer de recuperer l'ip avec juste les procedure qui font appel au site pour l'ip mais bon sa marche pas... tu pourrais pas me faire sa en vitesse ? car je doit t'avouer que je suis perdu... (peut etre parce que c'est le matin et que je dort encore ? lol)
Merci d'avance pour ton aide.
si tu veux un truc plus simple : http://flaith.free.fr/php/yourip
voici le code php :
et tu recup sur la ligne après "IP:" 
voici le code php :
Code : Tout sélectionner
<?php
if(isset($_SERVER["REMOTE_ADDR"])) { // Si on peut déterminer l'adresse IP
$ip_en_cours = $_SERVER["REMOTE_ADDR"];
} else { // sinon
$ip_en_cours = "Non identifiable";
}
$navigateur = $_SERVER['HTTP_USER_AGENT'];
$remote_host = gethostbyaddr( $REMOTE_ADDR ); #$_SERVER['REMOTE_HOST'];
echo "<html>";
echo "<head>";
echo "<title>Your IP !!!</title>";
echo "</head>";
echo "<body>";
echo "IP:$ip_en_cours";
echo "<br>";
echo "NAV:$navigateur";
echo "<br>";
echo "RH:$remote_host";
echo "<br>";
echo "</body>";
echo "</html>";
?>

-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
Ya pas moyen de récupérer les adresses ip en lançant des commandes genre ipconfig et en récupérant le texte de retour ?
Ca serait beaucoup plus simple...
Ca serait beaucoup plus simple...

Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !
-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
ma page est plus simple, elle ne donne que l'IP : http://www.gansta93.com/IP.php ça ne fait qu'un echo de REMOTE_ADDR
.

-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
Mais c'est pas un code PB qu'il voulait ?
Parce que en PHP c'est assez facile, du moins je connaissais déja...
Parce qu'il y a sous doute moyen de savoir savoir en lançant une commande (doit bien y en avoir une), après faut la toruver...
Parce que en PHP c'est assez facile, du moins je connaissais déja...
Parce qu'il y a sous doute moyen de savoir savoir en lançant une commande (doit bien y en avoir une), après faut la toruver...

Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !
Salut
essaye ce petit code defois que sa marche ....
A+
scaraber
essaye ce petit code defois que sa marche ....
A+
scaraber
Code : Tout sélectionner
InitNetwork()
Declare ip(Listview,nombreipscan)
Declare copie(gadget)
Enumeration
#Listview_0
#Button_0
#Frame3D_0
#Button_1
EndEnumeration
If OpenWindow(0, 217, 18, 190, 310, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Ip")
If CreateGadgetList(WindowID())
ListViewGadget(#Listview_0, 30, 50, 130, 160)
ButtonGadget(#Button_0, 10, 240, 70, 40, "Scan")
Frame3DGadget(#Frame3D_0, 20, 30, 150, 190, "Adresse ip")
ButtonGadget(#Button_1, 90, 240, 90, 40, " Copier dans le presse papier", #PB_Button_MultiLine)
EndIf
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_EventGadget
Select EventGadgetID()
Case #Button_0
ip(#Listview_0,100)
Case #Button_1
copie(#Listview_0)
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
End
Procedure ip(Listview,nombreipscan)
ExamineIPAddresses()
For X=0 To nombreipscan
Resultat = NextIPAddress()
Chaine$ = IPString(Resultat)
If chaine$="0.0.0.0"
Else
RemoveGadgetItem(Listview,X)
AddGadgetItem(Listview,X,Chaine$)
EndIf
Next
EndProcedure
Procedure copie(gadget)
Texte$=GetGadgetText(gadget)
SetClipboardText(Texte$)
EndProcedure
-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
Tu na pas bien suivi lollionel_om a écrit :Mais c'est pas un code PB qu'il voulait ?
Parce que en PHP c'est assez facile, du moins je connaissais déja...
Parce qu'il y a sous doute moyen de savoir savoir en lançant une commande (doit bien y en avoir une), après faut la toruver...
Oui c'est un code PB que je voulais (en php je sais le faire), mais comme apparament PB ne sait pas recup les ip si on est deriere un routeur et bien il fallait que je passe par une page php, et sa je ne savais pas que l'on pouvait faire
