Je crée un socket non bloquant, puis utilise le epoll
pour gérer le socket. Je ne définis pas de délai d'expiration sur epoll_wait
. Mais je trouve que le epoll
retourné en 5s à 10s, puis je vérifie avec le getsockopt
sur SO_ERROR
, la connexion trouver à expirer. Pourquoi expirer en si peu de temps?Pourquoi epoll_wait(), est renvoyé et le délai de connexion TCP se termine en 5s ~ 10s
J'essaie d'utiliser des outils pour fermer les paquets TCP. Le scénario est le suivant:
Lorsque mon client envoie un SYN
pour se connecter au serveur. Mais le serveur ne peut pas renvoyer le ACK
en 5s à 10s. Ensuite, le retour epoll_wait
. et vérifiez avec le SO_ERROR
. Je reçois un EIMTEDOUT
.
Je n'arrive pas à comprendre pourquoi le temps d'attente est si court en 5s à 10s. Est le problème de mon client ou est le epoll
?
+1 - 5-10 secs est en effet très court pour un timeout de connexion. Si le lien contenait un modem commuté, par exemple, la connexion échouerait toujours avec un délai d'attente aussi court. Je voudrais savoir pourquoi cela arrive aussi. –
Je ne sais pas pourquoi. Je viens d'utiliser le libev. la description ci-dessus est exactement ce que la libev fait en C++. Je trouve juste que la libev retourne ETIMEDOUT en si peu de temps. – hyman