Bonjour à tous,
Je fais un code serveur TCP. Il fonctionne bien ;-)
Par contre j'ai du mal à comprendre le fonctionnement de la fonction "listen(s,i)"
Elle est censée renvoyer un message d'erreur suand le nombre de connexion entrant est > i.
Le code en cause :
Question 1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 if(listen(sock,2) != 0) { fprintf(stderr,"%s listen %s", argv[0], strerror(errno)); return 1; } while(1) { struct sockaddr_in client; socklen_t len = sizeof(client); int sock_pipe; int ret, nb_question; sock_pipe = accept(sock, (struct sockaddr *) &client, &len);
Pourquoi positionner la fonction avant la boucle comportant accept()? l'erreur n'est plus gérée une fois la fonction exécutée?
Question 2 :
Que veux dire, dans le man : "... le client reçoit une erreur indiquant ECONNREFUSED, ou, si le protocole sous-jacent supporte les retransmissions, la requête peut être ignorée afin qu'un nouvel essai réussisse. " ?
Celà signifie t-il que si le nombre de connexion et >i alors le client essai plusieurs fois jusqu'à être accepté dans la file d'attente?
Merci d'avance pour vos réponses
Partager