C Socket : problème d'attachement de socket

Résolu
M.had Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -  
 M.had -
Bonjour,

Je suis entrain de programmer un mini ftp en C sous ubuntu. Dans la partie "serveur" la compilation se fait parfaitement, mai dans l'exécution, l'attachement de la socket ne se fait pas, et je ne trouve pas ou est le problème, voilà un bout de code:

adr_serveur.sin_addr.s_addr = htonl(INADDR_ANY);  
adr_serveur.sin_family      = AF_INET;            
adr_serveur.sin_port        = htons(PORT);
printf("serveur ouvert sur le port %d\n", adr_serveur.sin_port); 
    
// Attachement de la socket d'écoute
// Si echec de l'attachement
if ( (bind(socket_ecoute, (struct sockaddr*)&adr_serveur, size_len)) == -1 ) 
    {
          printf( "Echec : attachement de la socket !\n" );       
          exit(1);
    }  

2 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
C'est bien joli, mais il manque la moitié des initialisation des variables.
Il faut que tu regarde la valeur de la variable errno pour savoir ce qu'il se passe.
le plus simple dans un premier temps est de remplacer printf par perror.
0
M.had
 
Toutes ces variables sont initialisées, et en ce qui concerne "perror" je ne crois pas que le problème est ici, parce que si le message s'affiche c'est que l'attachement ne se fait pas, et c'est ça qui m'étonne, parce que normalement tout est bien définis !!

Merci!!
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Tu comprends tout de travers !
perror affiche errno en plus du message. si je te demande les initialisation, c'est pour savoir si tu n'as pas fait une erreur dedans.
Je ne vois pas de grosse bêtisses dans ce que tu as écrit, alors je cherche ailleurs. Et errno peut te donner une bonne indication (genre l'OS interdit l'attachement d'un soscket ou alors le port est déjà utilisé).
0
M.had
 
Je vous remercie ! j'ai changé la valeur du PORT et ça marche !

Concernant les initialisations je ne les ai pas mises parce que tout marchais bien auparavant , et d'un seul coup je voie cette erreur, donc j'était sure que tout était juste! merci comme même de m'avoir rappeler du PORT.

Je vais me documenter sur errno parce que je ne la connais pas!

Merci !
0