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 :

Connaitre le nom du host


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut Connaitre le nom du host
    Bonjour,

    J'ai développé une application client/serveur en C.
    Le serveur est uploadé sur mon hébergement et l'application marche très bien.

    Une fois le serveur lancé sur l'hébergement, je me connecte avec mes clients sur mon PC en rejoinant "www.mondomaine.com".

    Je voudrais savoir comment afficher ce nom de host coté serveur.
    Le but est que, une fois lancé, on puisse questionner le serveur pour savoir à quelle adresse doivent rejoindre les clients.

    J'ai essayé un gethostname mais cela ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Commande "hostname" - Afficher le nom du host
    void cmd_hostname() {
     
        char hostname[TAILLE_TAMPON]; // Nom du host
     
        // On tente d'afficher le nom du serveur
        memset(hostname, '\0', TAILLE_TAMPON);
        if( gethostname(hostname, TAILLE_TAMPON-1) !=0 )
            printf("Le nom du host est \"%s\".\n", hostname);
        else
            printf("Impossible d'afficher le nom du host.\n");
    }
    Merci.

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    memset inutile étant donné que les chaînes de caractères (comme les chaînes retournées par gethostname ...) en C sont toujours terminées par un '\0' et du coup, pendant l'appel, on fournit TAILLE_TAMPON (ou mieux : sizeof(tampon)) et non TAILLE_TAMPON - 1.

    Maintenant, t'es sous quel système ? Sous Windows il faut toujours appeler WSAStartup avant d'appeler une fonction de l'API WinSock. L'as-tu fais ?

    A part ça, je trouve ta manip assez bizzare. Comment penses-tu pouvoir demander au serveur son nom ou son adresse sans connaître ni son nom ni son nadresse ? Si tu nous expliquais mieux ta situation/ton problème, on pourra peut-être trouver une solution beaucoup plus saine et plus propre.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut
    Citation Envoyé par Melem
    memset inutile étant donné que les chaînes de caractères (comme les chaînes retournées par gethostname ...) en C sont toujours terminées par un '\0' et du coup, pendant l'appel, on fournit TAILLE_TAMPON (ou mieux : sizeof(tampon)) et non TAILLE_TAMPON - 1.
    J'en ai donc profité pour modifier ma fonction de la sorte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Commande "hostname" - Afficher le nom du host
    void cmd_hostname() {
     
        char hostname[TAILLE_TAMPON]; // Nom du host
     
        // On tente d'afficher le nom du serveur
        if( gethostname(hostname, sizeof(hostname)) !=0 )
            printf("Le nom du host est \"%s\".\n", hostname);
        else
            printf("Impossible d'afficher le nom du host.\n");
    }
    Citation Envoyé par Melem
    Maintenant, t'es sous quel système ? Sous Windows il faut toujours appeler WSAStartup avant d'appeler une fonction de l'API WinSock. L'as-tu fais ?
    Oui je suis sous Windows et l'appel est fait au préalable. J'ai également fait un build Linux du serveur et le résultat est également négatif.

    Citation Envoyé par Melem
    A part ça, je trouve ta manip assez bizzare. Comment penses-tu pouvoir demander au serveur son nom ou son adresse sans connaître ni son nom ni son nadresse ? Si tu nous expliquais mieux ta situation/ton problème, on pourra peut-être trouver une solution beaucoup plus saine et plus propre.
    Je vais essayer de reformuler:

    Actuellement j'upload le serveur sur mon hébergement web de "www.mondomaine.com" (enfin à la racine de l'hébergement dans usr/local/bin). Ensuite je me connecte en SSH pour lancer le serveur.

    Les clients peuvent alors rejoindre "www.mondomaine.com". Mais dans mon cas, je sais que le client doit rejoindre cette adresse car il s'agit de mon hébergement avec ses propres configuration.

    Si jamais un utilisateur lambda est amené à uploader le serveur sur un autre hébergement, comment est ce que l'utilisateur va connaître l'adresse IP ou l'adresse de type "www.mondomaine.com" qu'il va devoir rejoindre ?

    C'est pour ça que j'aurai désiré avoir une commande qui, une fois le serveur lancé, affiche l'adresse IP ou l'adresse que les clients doivent rejoindre. Ai-je été assez clair ?

    Merci.

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Citation Envoyé par FabaCoeur Voir le message
    Si jamais un utilisateur lambda est amené à uploader le serveur sur un autre hébergement, comment est ce que l'utilisateur va connaître l'adresse IP ou l'adresse de type "www.mondomaine.com" qu'il va devoir rejoindre ?
    S'il ne connait pas le nom de la machine, comment a-t-il fait pour uploader le serveur sur la dite machine ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut
    Et bien moi par exemple, j'ai uploadé le serveur par FTP sur "ssdomaine.monhebergeur.com" et je dois pourtant me connecter à "www.mondomaine.com"...!

    Le nom du FTP n'est pas le même que celui que doivent rejoindre les clients.

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Si tu fais un gethostbyaddr() sur l'adresse à laquelle tu te bind(), ça ne te donne pas ce que tu veux ?

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

Discussions similaires

  1. [Reflection] Connaître le nom d'une variable ...
    Par dahwoud dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 09/08/2005, 14h37
  2. connaitre le nom d'un pc distant à partir d'un TIdPeerThread
    Par raoulmania dans le forum Web & réseau
    Réponses: 2
    Dernier message: 27/07/2005, 15h46
  3. [C#] Connaitre le nom generé
    Par topolino dans le forum ASP.NET
    Réponses: 2
    Dernier message: 13/05/2004, 09h03
  4. Réponses: 2
    Dernier message: 29/10/2003, 11h05
  5. Connaitre le nom des imprimantes
    Par bastien dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/06/2002, 16h36

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