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 :
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);
Question 1 :
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