Celà fait un moment que je suis dessus, ne m’y connaissant pas trop j’ai appliqué plusieurs solutions glanées sur le net, mais rien à faire.
Je vous présente la partie du code en cause :
29 int listen_socket;
30 struct sockaddr_in localaddr;
31 printf("Network thread started\n");
32 listen_socket = socket(AF_INET, SOCK_STREAM, 0);
33 if(listen_socket == -1) {
34 printf("Error creating socket, aborting!\n");
35 return(0);
36 }
37 bzero(&localaddr, sizeof(struct sockaddr));
38 localaddr.sin_family = AF_INET;
39 int port = 12346;
40 localaddr.sin_port = htons(port);
41 localaddr.sin_addr.s_addr = htonl(INADDR_ANY);
42 int test = bind(listen_socket, (struct sockaddr*)&localaddr, sizeof(struct sockaddr));
43 if(test == -1) {
44 printf("Error binding socket, aborting!\n");
45 printf("%s\n", strerror(errno));
46 return(0);
47 }
48 test = listen(listen_socket, 10);
49 if(!test) {
50 printf("Error listening socket, aborting!\n");
51 printf("%s\n", strerror(errno));
52 return(0);
53 }
Et le résultat que j’obtiens :
Error listening socket, aborting!
Success
Donc je ne m’en sors pas avec bind, de plus le code errno et le retour de bind sont contradictoires…
Où est mon erreur ?
Merci d’avance.
# Désolé…
Posté par nicoastro . Évalué à 2.
# Vrai ou faux ?
Posté par Ph Husson (site web personnel) . Évalué à 2.
!(test) est vrai, si et seulement si test est nul... Pas de pot, listen réussit exactement si sa valeur de retour est 0.
En fait il faudrait écrire if(test) en version courte et pas forcement explicite, ou if(test!=0) en version longue et plus claire.
[^] # Re: Vrai ou faux ?
Posté par nicoastro . Évalué à 1.
# et aussi
Posté par gst . Évalué à 2.
51 printf("%s\n", strerror(errno));
devrait être, directement :
50 printf("Listen Error %d : %s", errno, strerror(errno));
car lors de l'appel à strerror(errno) sur la ligne 51 le "errno" (dû à l'appel à listen()) peut avoir été modifié par le premier printf().
[^] # Re: et aussi
Posté par gst . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.