IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

Comment obtenir l'adresse IP de la connexion ? [FAQ]


Sujet :

Web & réseau Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut Comment obtenir l'adresse IP de la connexion ?
    Bonjour à tous,
    Je cherche une fonction en Delphi qui me retournerait l'adresse IP de la connexion Internet.

    Les exemples de la FAQ me donnent l'IP de ma machine, celui-ci : http://delphi.developpez.com/faq/?pa...isteadressesip
    la liste des adresses IP de l'ordinateur. Mais je n'ai rien trouvé pour l'adresse de la connexion Internet. J'en ai besoin pour les connexions avec IP dynamique.

    Merci d'avance.
    fp

  2. #2
    Membre actif
    Profil pro
    ----
    Inscrit en
    Mai 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ----

    Informations forums :
    Inscription : Mai 2004
    Messages : 185
    Points : 245
    Points
    245
    Par défaut
    Je ne suis pas sur que ça t'aide, mais recherche une adresse IP ayant en plus une paserelle... en téhorie les seules adresses a avoir une passerelle sont les seul a pouvoir sortir...

    C'est plus une info qu'une reponse an fait

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 61
    Points : 40
    Points
    40
    Par défaut
    il n'y aurait pas un moyen en passant par des sockets ? :

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut Je cherche encore.
    Je ne connais pas trop les composant Internet
    Avec TCustomIpClient et TPowerSock je n'ai rien trouvé.

    Si vous allez sur ce site : https://www.grc.com/x/ne.dll?bh0bkyd2
    D'un simple click, il vous retourne l'adresse IP de votre connexion (celle qui relie votre routeur au web).

    - Ajout du 17/03/2005: ce site est encore plus simple : http://www.whatismyip.com/

    Je cherche à faire la même chose avec Delphi.

    fp

  5. #5
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut!

    Je possède 2 méthodes. Je sais que l'une d'entre-elles te conviendra...
    Il me semble que c'est la 1ère, non ?

    http://sub0.developpez.com/delphi/ListIP1.zip

    http://sub0.developpez.com/delphi/ListIP2.zip


  6. #6
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Inspirez vous de No-Ip.com
    Un script PHP sur un sie perso qui recupere l'IP distant, l'enregistre dans une BdD ou fichier texte, lu par lelogiciel, apres avoir charge la page bien sur ....

    Une variante plus propre serait de creer une application web via Delphi .. mais ca doit etre plus chaud ;p

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut Je cherche toujours
    Bonjour et merci à vous.

    Désolé de n'avoir pas répondu plus tôt, je n'étais pas là hier.

    Les exemples donnés par SubO ne répondent pas au problème.
    Ils font autrement ce que j'avais trouvé dans la FAQ.
    Le premier donne l'IP du PC qui exécute le programme.
    Le deuxième donne ... 127.0.0.1 soit le localhost

    La solution donnée par Clorish est peut-être la bonne.
    Mais j'aimerai une solution qui s'exécute sur le poste client.
    Concrètement, on fait des télémaintenances via l'ADSL chez des clients ayant des adresses IP dynamiques. Les services DYNDNS ne transmettent pas toujours en temps réel le changement.
    Je voudrais fournir une application qui d'un simple click d'une icône, posée sur le bureau du client, celui-ci soit capable de me donner l'IP de la connexion vers son FAI.

    En attendant, j'utilise les services d'un site qui la donne.

    @+
    fp

  8. #8
    Membre actif
    Profil pro
    ----
    Inscrit en
    Mai 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ----

    Informations forums :
    Inscription : Mai 2004
    Messages : 185
    Points : 245
    Points
    245
    Par défaut
    Je te propose une solution à l'emporte pièce qui ne me plais pas du tout en fait , mais ça fonctionne

    Tu lance une console caché qui execute 'ipconfig /all'.
    Tu récupaire l'information de sortie console que tu passe à la loupe. Cette commande te fournis les adresses IP de la machine ainsi que l'adresses de la passerelle et DNS que leurs sont assossié. L'adresse associé a la paserelle est forcement l'adresse de sortie.

    Je suis sur qu'il y'a plus facile pour connaitre l'adresse de la paserelle, mais je ne la connait pas... il doit bien y'avoir une API win32 qui fait ça...

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut Toujours par ça
    Merci,
    Mais ce que je cherche, c'est l'adresse IP de la connexion au FAI, pas celle de la passerelle (qui est ici un routeur).

    Cela-dit, il paraît que ipconfig/all donnerait (je n'ai pas vérifié, je n'ai aucun poste sous XP au bureau) bien l'adresse de la connexion au FAI sous XP, mais pas sous W2000.

    Ce qu'il me faudrait, c'est un programme qui ferait ce que fait ce site... Ça a l'air si simple ... ;-)))
    http://www.whatismyip.com/

    Mais à partir du poste client.

    En tout cas, je vous remercie de vos réponses. Je constate que ce problème qui avait l'air tout simple, ne l'est pas tant que ça.
    @+
    fp

  10. #10
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Le probleme des Routeur et passerelles, c'est que l'IP est donné a ce dernier et ton PC ne connait que les Adresses IP Locales.

    Quand a pourvoir etablir une connection sur le routeur, reclamer l'ip internet du routeur a travers un PC qui n'a rien a faire de cette IP en fait ... je trouve que c'ets une Grosse faille de securite de la part des concepteur de PAsserelles/Routeur.
    Aussi j'emet des doutes sur la faisabilite de la chose.

    D'autre part, il existe un site (No-IP.com) qui fourni un logiciel permettant de mettre a jour le BdD distante du site pour que l'adresse fournie pointe toujours sur l'IP (dynamique) du PC.
    Il fonctionne de la meme maniere que celle proposee .. donc la encore j'emet des doutes sur la possibilite de recuperer en local l'IP Internet un Reseau ....

    D'autre aprt, il me semble que la telemaintenance se fait via ADSL donc connection internet necessaire des 2 cotés .... N'est il pas possible de creer un client qui se connecter sur un log serveur chez vous ? Dans ce cas, vous avez l'ip^Distante (FAI) que vous pouvez Afficher ...

    Je propose un Log Serveur qui recopit les connections des Clients et stoque en memoire l'IP du FAI, ainsi que le code Client du Client.
    LEs techniciens lancent leut propre client (specialisé) qui affiche la lsite des client et de leurs IP d'apres celle connue du Serveur.

  11. #11
    Membre actif
    Profil pro
    ----
    Inscrit en
    Mai 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ----

    Informations forums :
    Inscription : Mai 2004
    Messages : 185
    Points : 245
    Points
    245
    Par défaut
    En fait, ce que tu cherche, c'est l'adresse de la partie visible par internet... en gros l'adresse du routeur... j'avais pas vue ça sous cette angle...

    Effectivement si tu veux cette adresse, soit il faut que ton programme se connecte a internet vers un site perso, soit que le serveur connecter informe la station de sont adresse vers internet (J'insiste, celle qui est associé a un routeur/passerelle)...

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut Merci à vous
    La télémaintenance sous PC-Anywhere via l'ADSL est faite par un simple routage de port.
    On a ouvert les ports sur le routeur du client qui permettent l'accès à PC-Anywhere qui sont ensuite routés vers telle ou telle machine.
    Pour plus de sécurité, on passe aussi par du VPN, mais tous ne l'ont pas et, dans ce cas, l'IP de la connexion est toujours fixe.

    Donc le seul besoin pour se connecter au client, c'est de connaître l'IP de sa connexion (il y a quand même une identification ;-)
    Avec IP fixe, pas de problème. Avec les IP dynamiques, on s'en remet à des services Dyndns qui associe un alias du type dyndns.monclient vers une IP. Mais ces services ne fonctionnent pas toujours.

    Si par téléphone le client nous communique l'adresse IP du moment, c'est gagné, on peut de nouveau se connecter.

    Je me suis peut-être pas fait comprendre. Je ne veux pas de mon site connaître les adresses IP du moment de mes clients. Je voudrais fournir une application (une fenêtre d'info, intégré par exemple à mes développements installés) qui leur permettrait à eux client, de connaître leur IP à l'instant T pour pouvoir me la communiquer par téléphone. Pour le moment, on leur met une icône vers http://www.whatismyip.com/
    Quitte à ce que l'application utilise des ressources Web pour se connecter.


    Pour Clorish, il faut que ce soit nous qui nous connections chez le client et pas le contraire.
    Vous dites, c'est une grosse faille de sécurité, mais cliquez sur http://www.whatismyip.com/ et vous avez l'info que je veux connaître. Ça permet d'atteindre le routeur, mais pas les postes derrière ce routeur.

    Merci de vous pencher sur mon cas.

    fp

  13. #13
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Si par téléphone le client nous communique l'adresse IP du moment, c'est gagné, on peut de nouveau se connecter.
    Je suppose que le client doit lancer une application qui affiche l'ip de la connection internet.

    Je te propose cela :
    Ce logiciel des le lancemement, se connecte sur un logiciel serveur sur ton pc via socket par exemple ....
    Le logiciel serveur recoit via les parametres socket l'adresse IP internet du logiciel client. Tu n'as plus qu'a l'affichier sur ton ecran.

  14. #14
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Je peux te proposer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Uses Wininet;
     
     
    {----------------------------------------------------------------}
    Function GetHTML(AUrl: String): String;
    Var
      databuffer: Array[0..4095] Of Char;
      hSession, hfile: hInternet;
      dwindex, dwcodelen, dwread, dwNumber: Cardinal;
      dwcode: Array[1..20] Of Char;
      res: PChar;
    Begin
      Result := '';
      hSession := InternetOpen('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG, Nil, Nil, 0);
      If (Assigned(hsession)) Then Begin
        hfile := InternetOpenUrl(hsession, PChar(AUrl), Nil, 0, INTERNET_FLAG_RELOAD, 0);
        dwIndex := 0;
        dwCodeLen := 10;
        HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE, @dwcode, dwcodeLen, dwIndex);
        res := pchar(@dwcode);
        dwNumber := SizeOf(databuffer) - 1;
        If ((res = '200') Or (res = '302')) Then Begin
          While (InternetReadfile(hfile, @databuffer, dwNumber, DwRead)) Do Begin
            If (dwRead = 0) Then Break;
            databuffer[dwread] := #0;
            Result := Result + PChar(@databuffer);
          End;
        End Else Result := 'Status:' + res;
        If (Assigned(hfile)) Then InternetCloseHandle(hfile);
      End;
      InternetCloseHandle(hsession);
    End;
     
    {----------------------------------------------------------------}
    Procedure TForm1.FormCreate(Sender: TObject);
    Begin
      Memo1.Text := GetHTML('http://monsite.com/getmyip.php');
    End;
    getmyip.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
      if(@getenv('HTTP_X_FORWARDED_FOR')) 
        echo @getenv('HTTP_X_FORWARDED_FOR');else 
      if(@getenv('HTTP_CLIENT_IP')) 
        echo @getenv('HTTP_CLIENT_IP');else 
      echo @getenv('REMOTE_ADDR');
    ?>
    Il faut que le script php soit sur un serveur...
    J'espère que ça te conviendra, à+

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut Super !!!
    SubO vous êtes un génie... ;-)))) (Esprit ou être mythique détenteur de pouvoirs magiques. Bon, mauvais génie.)
    (c) Larousse.) (ici Bon génie)

    Bon, on va dire un modérateur compétent !

    Le problème avec votre code, c'est qu'il marche tel quel (mettre quand même la bonne URL) et je ne sais pas si je vais devoir faire l'effort de le comprendre.

    Merci vraiment beaucoup

    fp

  16. #16
    Membre actif
    Profil pro
    ----
    Inscrit en
    Mai 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ----

    Informations forums :
    Inscription : Mai 2004
    Messages : 185
    Points : 245
    Points
    245
    Par défaut
    Citation Envoyé par Clorish
    Inspirez vous de No-Ip.com
    Un script PHP sur un sie perso qui recupere l'IP distant, l'enregistre dans une BdD ou fichier texte, lu par lelogiciel, apres avoir charge la page bien sur ....

    Une variante plus propre serait de creer une application web via Delphi .. mais ca doit etre plus chaud ;p
    T'a l'impression que c'était pas la bonne réponse

  17. #17
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut Re: Super !!!
    Citation Envoyé par fplanglois
    SubO vous êtes un génie... ;-))))
    Le mérite revient davantage à clorish il me semble; Il a été le 1er a proposer cette solution. Je n'ai fait que coder la fonction (je collectionne les méthodes de récupération d'IP ). A noter également que j'ai appris énormément grâce aux membres du forum (c'est important pour moi de le souligner). Le mérite revient donc à tous les membres du forum qui m'ont permis (et continu) de progresser.

    Pour ce qui est de la compréhension du code, dans les grandes lignes, il sagit d'éxécuter une URL et d'afficher le code HTML retournée par le serveur. J'ai donc récupérer le code de la fonction GetHTML sur le web (une petite recherche avec Google suffit largement) et pour le script PHP, je possèdais déjà le code, je l'utilise dans un projet d'espace membre en PHP.

    à+

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut Merci collectif
    Effectivement,

    Clorish donnait la méthode :
    Je suppose que le client doit lancer une application qui affiche l'ip de la connection internet.
    Je te propose cela :
    Ce logiciel des le lancemement, se connecte sur un logiciel serveur sur ton pc via socket par exemple ....
    Le logiciel serveur recoit via les parametres socket l'adresse IP internet du logiciel client. Tu n'as plus qu'a l'affichier sur ton ecran.

    Plutôt que celle-là, qui était plus le départ d'un service de redirection dynamique :
    Inspirez vous de No-Ip.com
    Un script PHP sur un sie perso qui recupere l'IP distant, l'enregistre dans une BdD ou fichier texte, lu par lelogiciel, apres avoir charge la page bien sur ....
    Ici, le PC, c'est n'importe quel site capable d'exécuter une page PHP, j'ai fait un lien vers mon site perso : www.fplanglois.com/getmyip.php

    Le merci s'adressait à tous les intervenants.

    Bref, la méthode plus le code, j'ai même la base d'une réflexion pour un service d'IP dynamique perso.

    Merci encore
    fp

  19. #19
    Nouveau Candidat au Club
    Inscrit en
    Juin 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Interaction Delphi et PHP
    Bonjour Sub0
    je trouve ton exemple getmyip.php treees intéressant et très original et si c'est possible je veux faire l’opération inverse, c-a-d un script PHP sur mon site qui me permet de lancer et exploiter le résultat d'une application sur une machine distante

    Exemple:

    une page PHP que j’évoque a son tour elle se connecte a une application Delphi sur mon serveur qui relève la charge CPU et me l'envoie pour pouvoir l'afficher sur ma page.

    Merci d'avance

  20. #20
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    893
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 893
    Points : 330
    Points
    330
    Par défaut
    ce n'est pas ta page php qui relèvera la charge de ton cpu, mais ton application delphi et qui la transmettra à ta page php par un GEt par exemple

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/01/2012, 15h09
  2. Réponses: 2
    Dernier message: 16/07/2009, 12h42
  3. Comment obtenir une adresse mac sur python
    Par Wael Maaoui dans le forum Réseau/Web
    Réponses: 4
    Dernier message: 19/02/2007, 14h52
  4. [D7], Comment Obtenir l'adresse MAC
    Par iam dans le forum Delphi
    Réponses: 10
    Dernier message: 09/01/2007, 13h45
  5. Réponses: 4
    Dernier message: 27/06/2005, 20h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo