Programmation réseau

pierre -  
kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   -
salut,
j'essaie actuellement d'ecrire un serveur simple a base des sockets.
le probléme est que après avoir crée le socket. l'appel de la fonction bind renvoi toujours un -1.
que peut etre la raison d'un tel problème.
merci,

1 réponse

  1. ADcomp Messages postés 1 Date d'inscription   Statut Membre
     
    je ne m'y connais pas plus que ca en prog' réseau mais :

    Il serait utile que tu donnes au moins un bout de code ...
    Que tu expliques un peu plus ton problème ( lang. de programmation , environnement de travail ,etc ..)

    Sinon as-tu vérifier ton droit d'accées au port ..? ( <1024 réservé à root ? )

    Voilà peut-être un début de solution, A+
    0
    1. pierre
       
      voici le bout de code qui cause le problème.
      bool Socket::init_server(int port, int nstack)
      {
      sockaddr_in addr;

      addr.sin_family = AF_INET;
      addr.sin_addr.s_addr ="127.0.0.1" ;
      addr.sin_port = htons((u_short)port);

      if(bind(sid, (sockaddr *)&addr, sizeof(addr)) != 0) return false;
      printf("\nBind result : %d\n",bind(sid, (sockaddr *)&addr, sizeof(addr)));
      printf("\nListen result : %d\n",listen(sid, nstack));
      printf("\n%s",errno);
      if(listen(sid, nstack) != 0) return false;
      return true;
      }
      l'appel de cette fonction renvoie un false à cause de l'echec de la fonction bind
      0
    2. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
       
      Salut,

      Remplace
      addr.sin_addr.s_addr ="127.0.0.1" ;

      par
      addr.sin_addr.s_addr =inet_addr("127.0.0.1") ;


      Car l'adresse doit être retranscrite en un entier codé sur 32 bits.
      0