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

 C Discussion :

Fonction qui permet de récupérer sa propre ipv6


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 115
    Points : 62
    Points
    62
    Par défaut Fonction qui permet de récupérer sa propre ipv6
    Bonjour,
    Je dois faire un tchat multi-utlisateurs en ipv6 et j'aimerais savoir si il y a en langage c une fonction qui permet de récupérer sa propre ipv6? si oui laquelle?

    Merci de votre compréhension

  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 : 61
    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
    Points : 50 367
    Points
    50 367
    Par défaut
    En C, il n'y a rien de prévu, il n'y a rien de portable, il faut demander au système d'exploitation. Indique nous ton OS.
    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
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 115
    Points : 62
    Points
    62
    Par défaut
    Les information de mon OS sont les suivantes :
    Distributor ID: Ubuntu
    Description: Ubuntu 10.10
    Release: 10.10
    Codename: maverick

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Donc, tu utilises les sockets.

    Lorsque tu te connectes en tant que client à un serveur, tu n'es pas obligé de nommer ta socket (ce qui se traduit, sur un réseau IP, par l'affecter à une adresse explicite). C'est le système qui la choisit pour toi. Pour la récupérer, il faut donc utiliser getsockname().

    getsockname() te renvoie un « nom de socket » qui correspond au domaine dans lequel ton socket existe. Ça veut dire que c'est la même fonction, que tu travailles en IPv4, en IPv6 ou avec des sockets UNIX.

    Par contre, il y a de fortes chances pour que ce ne soit pas celle que tu cherches à récupérer : l'adresse que tu vas recevoir est celle que le système d'exploitation t'a affectée, donc ton adresse locale. Si tu es derrière un routeur, tu auras une adresse interne en 192.168.x.x. L'adresse qui est vue par le serveur, elle, dépend de l'équipement qui se trouve tout au long du chemin entre ta machine et le serveur. Pour l'obtenir de façon fiable, il n'y a donc pas d'autre moyen que la demander au serveur (même traceroute peut être filtré sur le trajet). Et, ça, ça ne relève pas de la programmation système, mais du protocole que tu utilises pour communiquer avec ton serveur.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 115
    Points : 62
    Points
    62
    Par défaut
    j'utilise TCP comme protocole de communication, donc sachant ceci, y-a-t-il un moyen de récupérer son ipv6 en programmation?

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Relis mon précédent post.

  7. #7
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 148
    Points : 28 113
    Points
    28 113
    Par défaut
    Bonjour,

    Il faut que tu utilises la fonction getaddrinfo(), avec un champs ai_family valant AF_INET6.

    Sous Unix/Linux, l'utilisation des IPv6 est moins intuitives que l'utilisation des adressses IPv4, notamment parce que tu dois utiliser des fonctions de plus haut niveau, qui font plus de choses a ta place.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  8. #8
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    getaddrinfo() va te donner l'adresse IP d'un hôte distant ou lui indiquer sur quelles adresses se binder si on veut se mettre en serveur, mais ça ne lui donnera pas l'adresse locale d'une connexion établie…

  9. #9
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 148
    Points : 28 113
    Points
    28 113
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    getaddrinfo() va te donner l'adresse IP d'un hôte distant ou lui indiquer sur quelles adresses se binder si on veut se mettre en serveur, mais ça ne lui donnera pas l'adresse locale d'une connexion établie…
    Je ne vois pas pourquoi tu ne pourrais pas recuperer l'adresse locale... Je vais faire un test.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  10. #10
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Citation Envoyé par gangsoleil Voir le message
    Je ne vois pas pourquoi tu ne pourrais pas recuperer l'adresse locale... Je vais faire un test.
    Ben, ne serait-ce que parce qu'on ne peut pas passer son socket dans les arguments de getaddrinfo(). Donc, soit c'est pour implémenter « dig » ou « host » et obtenir des infos sur une adresse écrite sous forme canonique ou dans le DNS, soit c'est pour avoir des infos sur l'hôte local en particulier, et savoir notamment quelles adresses sont indiquées pour s'y mettre à l'écoute.

    Mais ça ne te donnera pas l'adresse locale d'une connexion établie (ça, c'est le nom du socket) et ça ne te servira pas non plus pour faire une application serveur ordinaire car, en général et sauf configuration explicite de l'administrateur, on écoute en général INADDR_ANY.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 115
    Points : 62
    Points
    62
    Par défaut
    merci de vos aide à tous ....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/07/2015, 19h07
  2. Fonction qui permet de récupérer le type d'un champ
    Par suolan dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/06/2006, 17h47
  3. Réponses: 1
    Dernier message: 25/03/2006, 21h24
  4. fonctions qui permet de changer de base (c++)
    Par coquin29 dans le forum C++
    Réponses: 3
    Dernier message: 18/02/2006, 18h07
  5. cherche une fonction qui permet de faire une recherche
    Par vbcasimir dans le forum Langage
    Réponses: 7
    Dernier message: 01/09/2005, 18h24

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