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

Développement Discussion :

probleme fonction gethostbyname


Sujet :

Développement

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut probleme fonction gethostbyname
    Hello,
    j'essaie de faire une application client/serveur sous unix mais dans mon client je cherche l'hote avec la fonction gethostbyname(param)( fonction de <sys/socket.h> je pense) mais je ne sais pas quoi mettre comme parametre, j'ai essayé a vec mon adresse ip mais ca ne fonctionne pas
    mc

  2. #2
    vic
    vic est déconnecté
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2002
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 431
    Points : 498
    Points
    498
    Par défaut
    Cette fonction fait une résolution DNS. Il faut que tu passes en paramètre une chaine de caractères contenant le nom de domaine à résoudre (exemple "www.developpez.com"), et tu obtiens en résultat une structure contenant l'adresse IP.

    Si tu as déjà l'adresse ce n'est pas la peine d'utiliser cette fonction.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut
    ok, mais comment je fais pour trouver le nom de domaine qui correspond a mon pc (ou ma connection...)?
    je ne veux pas passer par un site

    Et si j'ai pas besoin de cette fonction si j'ai l'ip comment je rempli les champs hp->addr et hp->length?

    voici un bout du code de depart:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    struct sockaddr_in serveur;
    struct hostent *hp;
    
    sd=socket&#40;AF_INET,SOCK_STREAM,0&#41;;
    
    hp=gethostbyname&#40;"?"&#41;;
    
    serveur.sin_family=AF_INET;
    bcopy&#40; &#40;char *&#41;hp->h_addr, &#40;char *&#41;&serveur.sin_addr, hp->h_length&#41;;
    serveur.sin_port=htons&#40;S_PORT&#41;;
    
    connect&#40;sd, &#40;struct sockaddr *&#41;&serveur, sizeof&#40;serveur&#41;&#41;;
    mc

    [Gangsoleil : Merci de penser aux balises de code]

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    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 150
    Points : 28 129
    Points
    28 129
    Par défaut
    bonjour,

    En C, tu peux essayer ca :

    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
        struct hostent *hp      = NULL; /* gethostbyname return a structure of this type */
        int ret                 = 0;			/* to get the return values */
        char hostname&#91;256&#93;      = ""; /* Will contain the hostname, returned by gethostname&#40;...&#41;*/
    	
        int nb_char             = 0;		/* Number of char written. Used to get result of sprintf */
    
        /* Initialisation */
        ret = sethostent &#40;1&#41;; /* Initialisation of host list*/
    
        ret = gethostname &#40;hostname, 256&#41;; /* set hostname string */
        if &#40;ret != 0&#41;
        &#123;
            ACC_ERR_TRC &#40;&#40;"Memory error. gethostname failed\n"&#41;&#41;;
            return -1;
        &#125;
    
        hp = gethostbyname &#40;hostname&#41;; /* fill the 'hp' struct */
    	
        if &#40;hp == NULL&#41;
        &#123;
            ACC_ERR_TRC &#40;&#40;"gethostbyname failed. IP address not getable\n"&#41;&#41;;
    	/* 	exit &#40;2&#41;; */
            return -1;
        &#125;
    /* Ta structure hp est maintenant remplie */

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut
    ok merci ca a l'air de fonctionner, parcontre je n'arrive pas à lancer le client et le serveur sur le mm pc (le serveur se deconnecte qd je lance le client :
    ACCEPT: Bad address
    ERRNO=29 )
    est ce qd mm possible?

  6. #6
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    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 150
    Points : 28 129
    Points
    28 129
    Par défaut
    Citation Envoyé par oclone
    ok merci ca a l'air de fonctionner, parcontre je n'arrive pas à lancer le client et le serveur sur le mm pc (le serveur se deconnecte qd je lance le client :
    ACCEPT: Bad address
    ERRNO=29 )
    est ce qd mm possible?
    Je ne sais pas, mais si tu as un problème précis dans un programme, alors je te conseil d'alle poster sur le forum dédié à ce langage, où des gens compétents seront en mesure de t'aider.

    Pour information, la valeur de Errno est définie dans les manpages d'unix si tu fais du C. Là, je devine qu'il s'agit d'une fonction qui ouvre une socket, en C++ a priori ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut
    ok merci pour ton aide

    Citation Envoyé par gangsoleil
    Pour information, la valeur de Errno est définie dans les manpages d'unix si tu fais du C. Là, je devine qu'il s'agit d'une fonction qui ouvre une socket, en C++ a priori ?
    en C

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

Discussions similaires

  1. probleme fonction
    Par GTJuanpablo dans le forum Langage
    Réponses: 4
    Dernier message: 03/03/2006, 20h46
  2. [XSL]Probleme fonction recursive
    Par Le-Cortex dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 12/12/2005, 15h10
  3. [Mail] Probleme fonction mail()
    Par tissot dans le forum Langage
    Réponses: 1
    Dernier message: 14/11/2005, 12h55
  4. problème fonctions callback
    Par youp_db dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 02/10/2005, 14h47
  5. probleme fonction syntaxe
    Par gIch dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 28/02/2005, 09h52

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