Programmation réseau

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

  • Votes
  • Date
  • Date décroissante
  1. 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+
    1. 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
    2. Modérateur
      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.