Programmation réseau

Fermé
pierre - 22 juil. 2006 à 01:29
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 22 juil. 2006 à 16:50
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

ADcomp Messages postés 1 Date d'inscription jeudi 20 juillet 2006 Statut Membre Dernière intervention 22 juillet 2006
22 juil. 2006 à 10:32
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
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
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
22 juil. 2006 à 16:50
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