Forum Programmation.c getservbyname

Posté par  .
Étiquettes : aucune
0
27
jan.
2006
Bonjour
je me lance dans les sockets depuis quelques jours et je bloque sur la fonction getservbyname.
j'ecrit ce code

Code:

if ((sptr=getservbyname("ssh","tcp"))==NULL){
printf("Impossible d'avoir les infos sur le service \n");
exit (1); }
printf("Le nom du service de la machine est : %s \n",sptr->s_name);
printf("Le port du service de la machine est : %i \n",sptr->s_port);


et à léxécition, ca me donne

Citation:

Le nom du service de la machine est : ssh
Le port du service de la machine est : 5632


5632 au lieu de 22 c'est bizarre.
j'en ai essayer d'autre comme https sur 443 et ca me donne

Citation:

Le nom du service de la machine est : https
Le port du service de la machine est : 47873


etc...
La valeurs ne sont même pas dans etc/service.
J'ai donc essayé getservbyport et la aussi c'est etrange

Code:

if ((sptr=getservbyport(512,"tcp"))==NULL){
printf("Impossible d'avoir les infos sur le service \n");
exit (1); }

pour le port 512 j'ai se serice "compressnet" qui est normalement sur le port 2
et pour le port 2 j'ai le service exec qui lui est normalement sur 512.
La je patauge, quelqu'un a une piste pour moi ??
merci
  • # htons()

    Posté par  (site web personnel) . Évalué à 3.

    Les numéros de port sont en big-endian, comme la plupart des communications réseau propres.

    printf("Le port du service de la machine est : %i \n",ntohs(sptr->s_port));

    fonctionnera mieux.

    htons() Host to Network
    ntohs() Network to Host
    (qui en fait fonctionnent pareil).
    • [^] # Re: htons()

      Posté par  . Évalué à 1.

      Merci beaucoup, c'est exactement ca !!!
      ca fait deux soirs que je tatone et je ne pensais pas du tout à un truc comme ca.
      Je vais chercher un peut d'info sur le sujet, j'avais entendu parler de little et big indian mais sans vraiment savoir comment ca fonctionne.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.