Programmation réseau

pierre -  
kilian Messages postés 8854 Statut Modérateur -
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 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
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
kilian Messages postés 8854 Statut Modérateur 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