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
13if(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







Répondre avec citation








Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
Partager