Recuperer ip internet [Résolu]

cs_shadrak 5 Messages postés samedi 5 juin 2004Date d'inscription 9 août 2015 Dernière intervention - 2 sept. 2006 à 19:59 - Dernière réponse : jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention
- 3 sept. 2006 à 20:20
Bonjour, je cherche le moyen de recuperer une Ip Internet, sous delphi 4, j ai bien trouvé plusieurs examples mais tous utilisent du code non compatible D4.MErci.
Afficher la suite 

22 réponses

Répondre au sujet
Caribensila 2671 Messages postés jeudi 15 janvier 2004Date d'inscription 18 janvier 2018 Dernière intervention - 3 sept. 2006 à 02:45
+3
Utile
Salut,

--> shadrak
Ne cherche pas une fonction qui récupère ton IP Internet, il n'y en a pas!
Le principe est de se connecter à un site du Net qui te renvoie ton IP.
A toi de trouver ton IP dans le message renvoyé. Y'a plusieurs sources sur ça, ici. Je pense en particulier à un source de Japee...
http://www.delphifr.com/codes/IP-INTERNET-VIA-CONNEXION-RESEAU-RECUPERER-IP-DANS_28787.aspx

Et je crois savoir que Japee tourne sur D4...

Bon coding!
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Caribensila
JulioDelphi 2354 Messages postés dimanche 5 octobre 2003Date d'inscription 18 novembre 2010 Dernière intervention - 2 sept. 2006 à 20:02
0
Utile
Aucune de ces 2 pages ne contient un code compatible D4 ?
http://www.delphifr.com/recherche.aspx?r=recuperer+ip+internet&tr=source
Commenter la réponse de JulioDelphi
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 2 sept. 2006 à 22:30
0
Utile
salut,
dans le programme WEBCam IP j'ai mis une fonction qui récupère l'IP (il y a 4 possibilités):
function TFServer.GetLocalIp: string;
var HTMLSource:string;
wsaData: TWSAData;
addr: TSockAddrIn;
Phe: PHostEnt;
szHostName: array[0..128] of Char;
BeginDelimit,EndDelimit:integer;
begin
if RadioButton1.Checked then
begin
try
try
if WSAStartup($101, WSAData) <> 0 then
raise Exception.Create('Cannot initialize WSA');
try
if GetHostName(szHostName, 128) <> SOCKET_ERROR then
begin
Phe := GetHostByName(szHostName);
if Assigned(Phe) then
begin
addr.sin_addr.S_addr := longint(plongint(Phe^.h_addr_list^)^);
Result := inet_ntoa(addr.sin_addr);
end;
end;
finally
WSACleanup;
end;
except
on e:Exception do begin
Result:='Error: '+e.Message;
raise;
end else
raise;
end;
finally
//StaticText1.Caption:='Automatic Ip detection: '+Result;
end;
end;
if RadioButton2.Checked then
begin
Try
HTMLSource:=IdHTTP1.Get('http://checkip.dyndns.org/');
delete(HTMLSource,1,pos(':',HTMLSource)+1);
delete(HTMLSource,pos('<',HTMLSource),80);
result:=HTMLSource;
Except
// Result:=false;
end;
end;
if RadioButton3.Checked then
Try
result:=IdHTTP1.Get('http://filezilla.sourceforge.net/misc/ip.php');
Except
// Result:=false;
end;
if RadioButton4.Checked then
begin
Try
HTMLSource:= IdHTTP1.Get('http://www.showmyip.com/fr/'); //On demande le contenu de la page et on le récupère dans HTMLSource
BeginDelimit:=length(Copy(HTMLSource,1, Pos('Internet',HTMLSource)+ 9 ) );//);76 ,77
EndDelimit:=length(Copy(HTMLSource,Pos('-->',HTMLSource)-1,Length(HTMLSource)));
Result:=Copy(HTMLSource,BeginDelimit,Length(HTMLSource)-BeginDelimit-EndDelimit+1); //On extrait l'adresse IP de HTMLSource
Except
// Result:=false;
end;
end;
IPServer.Text:=Result;//'Automatic Ip detection: '
end;
Il y en a peut être une qui fonctionne sous D4 mais je n'ai pas testé

@+
jlen
Commenter la réponse de jlen100
cs_shadrak 5 Messages postés samedi 5 juin 2004Date d'inscription 9 août 2015 Dernière intervention - 2 sept. 2006 à 22:57
0
Utile
non, aucun de ces codes n est compatible D4, j ai besoin de l  ip internet et pas de l ip locale.Beaucoup de monde semble chercher cette fonction.

Mon compilateur ne reconnais pas TWSAData comme type de donnée.Donc, impossible pour moi de tester les sources utilisant ceci.
Commenter la réponse de cs_shadrak
Utilisateur anonyme - 3 sept. 2006 à 00:40
0
Utile
SAlut

Shadral : JLen te propose de récupérer l'adresse Internet :
HTMLSource:= IdHTTP1.Get('http://www.showmyip.com/fr/');
Tu récupère l'adresse IP qui est dans le souce de la page html de l'url :www.showmyip.com.

En aucune façon tu récupère ici l'IP Local.

Si D4 ne reconnait pas TWSAData, il y a surement l'équivalent. Sinon rien t'mpeche de récupérer D2005 qui est gratuit. Il y a donc bel et bien une solution à ton probleme.
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 3 sept. 2006 à 00:41
0
Utile
Ah oui : petit truc aussi, ce n'est pas ton OS qui t'attribue ton IP Internet mais ton FAI. Donc trouver une API me semble impossible.
Commenter la réponse de Utilisateur anonyme
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 3 sept. 2006 à 07:11
0
Utile
D4 cimmence à être sérieusement obslète il seraittemps de passer à un e version plus récente
Commenter la réponse de jlen100
cs_shadrak 5 Messages postés samedi 5 juin 2004Date d'inscription 9 août 2015 Dernière intervention - 3 sept. 2006 à 09:38
0
Utile
ok pour le source de Japee, ca marche, merci.Mais j ai pensé que ce serais vraiment plus simple.Apres tout quand on ouvre la connexion reseau puis proprieté de la connexion, il affiche bien l ip.Elle doit donc bien se trouver quelque part dans le systeme... Delphi 2005 est gratuit mais la diffusion de programmes est interdite alors je ne vois pas trop l interet.
Commenter la réponse de cs_shadrak
Utilisateur anonyme - 3 sept. 2006 à 10:25
0
Utile
salut

@Japee : La partie HTMLSource:= IdHTTP1.Get('http://www.showmyip.com/fr/'); consiste à se connecter sur www.showmyip.com et récupérer l'adresse IP internet comme tu l'as souligné ^^.

@Shadrak : Avec D2005 personnel tu as le droit de diffuser tes softs mais tu n'as pas les droits de les vendre comme avec D4(il me semble).

@+
Commenter la réponse de Utilisateur anonyme
cs_shadrak 5 Messages postés samedi 5 juin 2004Date d'inscription 9 août 2015 Dernière intervention - 3 sept. 2006 à 10:35
0
Utile
@Frankie: Le probleme c 'est que je les vends.Et je le fait avec D4 depuis quelques années deja.Je pense avoir droit de les vendre ou alors j ai mal lu la licence. Je l ai pourtant acheté, pas telechargé.
Commenter la réponse de cs_shadrak
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 3 sept. 2006 à 10:46
0
Utile
l'adresse IP ne se trouve pas dans le système A la connexion c'est ton FAi qui te transmet l'adresse mais elle n'est pas stockée (peut être voir le fichier ini du programme de connexion? ) et encore celà dépend du FAI donc si tu veux que ton programme soit "universel" tu dois récupérer l'adresse IP sur le net ( en fait quand tu te connectes à un site HTTP l'adresse en envoyée dans l'en-tête de la requête)

@+
jlen
Commenter la réponse de jlen100
JulioDelphi 2354 Messages postés dimanche 5 octobre 2003Date d'inscription 18 novembre 2010 Dernière intervention - 3 sept. 2006 à 12:10
0
Utile
ouè donc comme j'avais dit, sur la page http://www.delphifr.com/recherche.aspx?r=recuperer+ip+internet&tr=source
3eme résultat c'est le lien que tu as mis en "reponse acceptée"
merci la recherche...

Mon site DELPHI =)
Commenter la réponse de JulioDelphi
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention - 3 sept. 2006 à 12:54
0
Utile
Salut,

D4 ou D2005 à partir du moment ou tu as acheté le produit avec les licences tu as le droit de vendre tes softs ...

Ensuite dire que D4 est obsolète c'est peut être un peut fort

Personnellement je préfère un D4 Pro (avec licences) que n'importe quel version personnel ultérieur

En suite un code réalisé sous D4 fonctionnera sous D6, D7 et D2005 mais l'inverse est moins évidant.

Et pour finir les derniers codes que j'ai postés ici ont étés fait avec D4 et je ne pense pas qu'ils aient perdus de l'interêt pour autant !

@+
Cirec
Commenter la réponse de Cirec
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 3 sept. 2006 à 13:40
0
Utile
salut cirec

un code réalisé sous D4 ne fonctionne pas forcément sous les versions postérieures
il existe des différence notables entre les versions pour exemple il a fallut reclarer ceratine variable et mettre une compilation conditionnelle pour que directdraw se compile pas sous D7 et D2005 , le code de jappee ne se compile pas sous D2005 (fastnet n'existe plus) pour les nouveaux développement il vaut mieux passer par INDY

@+
jlen
Commenter la réponse de jlen100
Matt 261 1201 Messages postés mercredi 2 novembre 2005Date d'inscription 10 septembre 2011 Dernière intervention - 3 sept. 2006 à 13:52
0
Utile
Salut,

Et on retombe dans ce grand débat...

@+
 Matt

<hr size="2" width="100%" />La paresse est la mère du génie...
http://www.delphilab.com
Commenter la réponse de Matt 261
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 3 sept. 2006 à 14:11
0
Utile
C'est le problème de l'évolution des logiciels en particulier au niveau internet
pour le code de jappee il faudrait regarder pour remplacer fastnet par INDY ce qui au niveau HTTP client ne devrait pas être trop compliqué
en restant sur des versions anciennes on se condamne à ne plus bénéficier des avancées (quelques fois utiles mais parfois contestables ...)
D4 à du sortir avant 2000 et en 6/8 ans il s'est passé pas mal de choses y compris pour facilité le développement des projets. Quand on développe pour commercialiser les gains de temps sur le développement compensent largement le coût d'achat d'une nouvelle licence.

@+
jlen
Commenter la réponse de jlen100
japee 1792 Messages postés vendredi 27 décembre 2002Date d'inscription 12 novembre 2016 Dernière intervention - 3 sept. 2006 à 14:12
0
Utile
Salut,


Je suis forcément d'accord avec le propos de Cirec, puisque j'utilise moi aussi D4 pro avec licence.

Je me dis que si un jour je dois diffuser mes softs... payant ou pas, je suis ainsi libre d'en décider.

Et puis je ne suis pour l'instant pas vraiment limité dans les
possibilités, mais il est vrai que je suis encore en apprentissage, et
pour un moment...

Sinon, avec D4 pro, on dispose de tout ce qui faut pour les BD, internet et le réseau.

L'absence la plus cruelle est la série des TShellTreeView, etc... qui
sont extrêmement puissants et utiles (et beaux), mais qui ne sont hélas
apparus qu'avec D5.

Il manque parfois quelques fonctions apparues sur les versions ultérieures, mais on peut toujours les recréer...

Je pense à la série des "Exclude/IncludeSlash" et autres PathDelimiter
qui sont faciles à recréer. Plus gênant pour moi l'absence de la
bibliothèque de fonctions DateTime, mais il est très facile de
réinventer "EncodeDateTime".


Ce n'est certes pas un choix toujours facile, mais personnellement le
fait qu'il manque quelques fonctions "toutes cuites" m'aide à
progresser.

Mais je comprends et admets les réticences de jlen100, et pense
effectivement qu'il vaut mieux utiliser les composants Indy, et de
toute manière ne pas essayer ce compiler sous D2005-2006 un code écrit
sous D4, surtout pour un usage professionnel.


Bonne prog' dominicale
Commenter la réponse de japee
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 3 sept. 2006 à 14:53
0
Utile
je ne suis pas non plus un pro de la programmation; ce n'est pour moi un outil comme un autre et c'est surement pour celà que j'essaye d'aller au plus simple (surtout qu'il faut que cela reste compréhensible pour mon petit cerveau!!)
j'utilise indifférament D6 entreprise D7 et D2005 perso surtout quand je veux poster un code sur CS pour qu'il soit utilisable par le grand monde)
les problèmes de compatibilité sont surtout embêtant pour les versions antérieures mais avec un peu d'habitude il sont assez vite résolus
-->Japee pour ton programme il suffit de remplacer NMHTTP1 par un composant IDHTTP client ce qui donne IDHTTP1
de mettre :
Body:=IdHTTP1.Get(Url1);
de supprimer la ligne Body := IdHTTP1.Body;
et cela fonctionne

@+
jlen
Commenter la réponse de jlen100
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention - 3 sept. 2006 à 14:55
0
Utile
"et de toute manière ne pas essayer de compiler sous D2005-2006 un code écrit sous D4"

Je ne fait plus que ça !!!

au début quand j'ai eu D9 je ne voulais plus entendre parler de D4

Mais j'ai très vite remaqué que ce n'était pas la bonne méthode, en effet les codes écrits sous D9 (des composants principalement) me demandaient le double de temps de dévellopement (j'abuse un peut) puisqu'ils refusaient de fonctionner tel quel sous D4.
Alors que l'inverse fonctionne pratiquement à chaque fois, bien sur, sauf dans les cas cités plus haut.

Et ce qui me chagrine par dessus tout c'est qu'un code compilé sous D4 fait 482.5 Ko et le même code compilé sous D9 (où D2005) fait 587.0 Ko?
100 Kilos pour le même code ça fait beaucoup ... non ?
et le programme ne fonctionne pas mieux pour autant !

"Quand on développe pour commercialiser les gains de temps sur le développement compensent largement le coût d'achat d'une nouvelle licence"

mais ce n'est pas le cas de la majorité des membres ... la plus part des membres font ça pour le plaisir (comme moi)

Bien sur ça ne veut pas dire qu'il ne faut pas suivre l'évolution de Delphi (qui apparement en est à sa fin) loin de moi l'idée ...

Bon sur ce bonne prog à tous ...
@+
Cirec
Commenter la réponse de Cirec
elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention - 3 sept. 2006 à 17:41
0
Utile
Effectivement, pour avoir cette adresse tu doit regarder le réseau de l'exterieure.

Tu peux utiliser des API pour retrouver des infos sur les adresses de routages (j'ai fait une source la dessus), les différentes interfaces et autres adresses locales. Tu peux aussi trouver des infos sur les différentes interfaces dans le registre à cette clé : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

Le problème peut être résolu si tu utilises un modem simple, avec un PC derrière. Mais si tu te trouves derrière un ou plusieurs routeurs, tu ne pourras pas récupérer ton adresse internet comme çà.

Tu peux trouver les adresses des différents routeurs qui mène à une autre machine via la commande "tracert" mais celle-ci ne te renverra que les IP qui te permettent de sortir, donc l'IP de ton FAI et ta passerelle mais non la tienne.

En gros tu es obliger de communiquer avec une machine distante, et c'est elle qui te renverra ton IP, car c'est à partir du moment ou tu sors vers ton FAI que ton adresse internet va apparaitre dans les paquets.

<!-- blocPrincipal -->
 /\_/\
( o.o ) ~ ElGuevel ~
 > ^ <
Commenter la réponse de elguevel

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

recuperer ip internet - page 2