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

Réseau C Discussion :

Obtenir l'adresse IP publique de l'ordinateur local


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Par défaut Obtenir l'adresse IP publique de l'ordinateur local
    Bonjour,

    Je suis débutant en programmation réseau en C, je sais juste me servir des fonctions les plus populaires de la bibliothèque winsock.

    Je poste ce message car j'aimerais savoir comment obtenir l'adresse IPV4 de l'ordinateur local (e.g. L'ordinateur sur lequel s'exécute le processus) en faisant l'hypothèse que l'ordinateur est connecté à internet.

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    En général, un poste local possède une adresse IP privée (192.168.x.y). La translation d'adresse de privé vers publique est faite par un autre équipement (la box) et il n'est pas possible de connaitre cette adresse publique simplement.

    Si c'est vraiment l'adresse publique qui t'intéresse, tu peux peut être lancer par programme une requête HTTP vers un site spécifique (http://www.mon-ip.com/ par exemple) et analyser la réponse pour connaitre ton adresse publique.

    Sinon, si tu veux ton adresse IP locale, il y a des fonctions dans l'API winsock pour cela (GetAdaptersAddresses()).
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Bonjour,

    Citation Envoyé par Deudvid Voir le message
    Je suis débutant en programmation réseau en C, je sais juste me servir des fonctions les plus populaires de la bibliothèque winsock.
    On en déduit donc que tu travailles sous Windows. C'est important parce que la manière de faire ne sera pas la même en fonction des systèmes d'exploitation sur lesquels ton programme fonctionnera, et qu'il ne faut donc pas prendre de (mauvaises) habitudes. Par ailleurs, un ordinateur peut utiliser des adresses IP sur un réseau local sans être connecté à Internet à proprement parler, il peut y être connecté via une connexion PPP (utilisés avec les modems analogiques ordinaires) auquel cas c'est le protocole qui la définit, ou via DHCP, ou par configuration fixe (je pense cependant que GetAdaptersAddresses() te les renverra dans tous les cas).

    Il se peut également que ta machine dispose de plusieurs interfaces réseau, qui potentiellement auront chacune une adresse, et il se peut même qu'une interface donnée gère à elle seule plusieurs adresses IP.

    L'idée étant que l'adresse expéditeur (la tienne) est fixée par l'interface de sortie utilisée, laquelle est elle-même déterminée par la table de routage. Donc, a priori, c'est une question de configuration système le programme n'a jamais à s'en occuper.

    Il peut toutefois être intéressant de connaître l'adresse I.P. de l'expéditeur d'un paquet quand tu le reçoit et, surtout, à laquelle de tes adresses il a été envoyé. Mais ça, c'est une info qui t'est donnée par les sockets quand tu les utilises.


    Moralité : il est essentiel de savoir ce que tu veux faire au final. D'où ma question : que cherches-tu à faire au final ? :-)

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Par défaut
    Merci pour vos premières réponses.

    Pour répondre à Obsidian, je cherche un procédé pour connaître l'adresse IPV4 publique d'une machine sur laquelle tournera mon processus serveur. L'adresse sera transmise à un autre utilisateur par une voie hors-programme (e.g. Via MSN) qui la saisira dans un champ du processus client. Ensuite, le processus client se connectera au processus serveur par socket et en utilisant l'adresse saisie. Les processus serveur et client ne s'exécuteront pas sur la même machine et les machines ne seront pas dans le même réseau local d'où l'utilité d'Internet et des adresses IP publiques.

    En espérant que cette indication vous permettra de me donner une solution.

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Alors, ce que tu veux faire ne fonctionnera pas de manière fiable (comprendre dans 100% des cas).

    Un process sur une machine peut connaitre son adresse IP locale mais ne peut pas connaitre de manière simple sont adresse IP telle que vue par un distant. Seul le distant connait cette adresse. En effet, le paquet peut passer par plusieurs dispositifs de translation d'adresse (en général 1, mais parfois plus).

    Par contre, ce que tu peux faire, c'est te connecter en TCP à un serveur par un protocole particulier à définir (le tien), ce serveur récupère ton adresse IP publique (ca, c'est facile, mais seul le distant peut connaitre de manière fiable ton adresse IP publique) et te la retourne.

    Après une fois que tu as reçu ton adresse IP publique, tu la traites comme tu le souhaites.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Citation Envoyé par Deudvid Voir le message
    Pour répondre à Obsidian, je cherche un procédé pour connaître l'adresse IPV4 publique d'une machine sur laquelle tournera mon processus serveur. L'adresse sera transmise à un autre utilisateur par une voie hors-programme (e.g. Via MSN)
    Pour compléter ce que dit ram-0000. Il est essentiel que tu comprennes qu'un ordinateur peut avoir 5, 10, 15 adresses IP à la fois, mêmes publiques. Rien n'empêche ton PC de se connecter à plusieurs fournisseurs d'accès en même temps, par exemple.

    Le plus souvent, sur un ordinateur personnel, il n'y a qu'une seule connexion, mais cela va être très rare sur un serveur, par exemple. D'autre part, si ton PC est sur un réseau d'entreprise (un LAN tout bête), alors ton adresse IP sera interne (probablement en 192.168.x.y) mais les paquets seront quand même routés jusqu'à la passerelle, où ils subiront une opération de NAT-Masquerading pour se promener dehors avant qu'ils reviennent jusqu'à ta machine par le même biais. Il te sera donc impossible de déduire à l'avance quelle adresse publique de ta compagnie sera utilisée pour faire transiter ta connexion. Accessoirement, cela interdit de fait toute connexion entrante si elle n'a pas été explicitement initiée de l'intérieur. C'est pour cela que les boxes configurées en routeur font de bons firewalls.

    Cela signifie également qu'il te sera impossible de faire ce que tu veux faire si tu es en entreprise ou si tu es derrière une box en routeur, à moins de la paramétrer explicitement.

    Il faut donc faire l'hypothèse que ton serveur se trouve sur une machine personnelle, connectée à Internet par modem ou via une box en mode transparent. À ce moment, tu peux utiliser GetAdapterAddress() que ram-0000 t'a fournie et ne lire que la premère adresse … ou la plus cohérente.

  7. #7
    Invité de passage
    Inscrit en
    Décembre 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 1
    Par défaut
    C’est facile vous pouvez avoir adresse ip de vos contacts sur msn il suffit juste de voir ce petit tutoriel : http://mouaad.netai.net/ip.html

  8. #8
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par realmouad Voir le message
    C’est facile vous pouvez avoir adresse ip de vos contacts sur msn il suffit juste de voir ce petit tutoriel : http://mouaad.netai.net/ip.html
    Oui mais cela ne répond pas à la question posée.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. [Routeur] Adresse IP publique depuis le réseau local m'affiche la page du routeur
    Par Miles Raymond dans le forum Dépannage et Assistance
    Réponses: 11
    Dernier message: 20/10/2011, 09h00
  2. Obtenir l'adresse mac de sa carte reseau
    Par kivoch dans le forum C++Builder
    Réponses: 4
    Dernier message: 19/11/2009, 18h30
  3. Obtenir l'adresse IP de mon pc
    Par Biou Pink Powa dans le forum C
    Réponses: 3
    Dernier message: 28/01/2004, 20h01
  4. Obtenir l'adresse MAC réelle
    Par gpetto dans le forum Réseau
    Réponses: 16
    Dernier message: 03/11/2003, 16h56
  5. Quest ce qu'une adresse reseau publique ?
    Par WOLO Laurent dans le forum Développement
    Réponses: 3
    Dernier message: 09/08/2003, 12h35

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