bien ..J'utilise un modèle typique de epoll + multithread pour gérer des sockets massives, c'est-à-dire, j'ai un thread appelé epollWorkThread qui utilise epoll_wait pour gérer i/o prises Bien qu'il y ait un événement EPOLLIN, recv() fera le travail et j'utilise le mode noblocking pour permettre un retour immédiat. Et recv() est en effet dans une boucle while (true). Tout va bien dans le temps initial (peut-être quelques heures ou peut-être minutes ou si j'ai des jours chanceux), je peux recevoir l'information. Mais un peu plus tard, recv() insiste pour retourner -1 avec errno = 107 (ENOTCONN). L'autre pair du transport est écrit en AS3 qui s'assure que le socket est connecté. Donc, je suis confus par le comportement de recv(). Merci d'avance et tout commentaire est apprécié!recv() avec errno = 107: (point de terminaison de transport connecté)
4
A
Répondre
3
Errno 107 signifie que le socket est et non connecté (plus). Plusieurs raisons peuvent expliquer cette situation. En supposant que vous avez raison et que les deux côtés de la connexion affirment que le socket est toujours ouvert, un routeur/commutateur intermédiaire peut avoir interrompu la connexion en raison d'un délai d'expiration. Le moyen le plus sûr d'éviter de telles choses est d'envoyer périodiquement un message «santé» ou «maintien en vie». (Ainsi, le routeur/commutateur intermédiaire accepte la connexion comme vivant ...) =
Questions connexes
- 1. java mail keeping Objet de transport connecté
- 2. Point de terminaison non trouvé
- 3. WCF + SSL aucun point de terminaison trouvé
- 4. Écoute de point de terminaison WCF
- 5. Adresse de point de terminaison WCF
- 6. Jetons de point de terminaison Flex Builder
- 7. Routage de point de terminaison WCF
- 8. Erreur de point de terminaison avec plusieurs adresses IP
- 9. Aucun point de terminaison OpenID trouvé
- 10. Définition dynamique du point de terminaison WCF
- 11. Point de terminaison JSON avec .NET RIA Domainservice
- 12. Les types de point de terminaison WCF mex doivent-ils correspondre au type de point de terminaison de service?
- 13. Comment obtenir le point de terminaison de l'instance de service?
- 14. Un point de terminaison publié a-t-il un nombre limité de connexions? [Java 1.6.0_16]
- 15. Adresse de point de terminaison WS sur un serveur Glassfish
- 16. Erreur lors de la création d'un point de terminaison WCF
- 17. WCF, en changeant le baseAdress d'un point de terminaison
- 18. HTTPWebRequest, validation du point de terminaison SSL et
- 19. Spécifier le point de terminaison WCF par défaut dans app.config
- 20. Comment obtenir l'adresse IP d'un point de terminaison distant WCF?
- 21. Obtention d'un point de terminaison distant pour une réception asynchrone
- 22. Forme un service WCF par point de terminaison
- 23. Pourquoi mon point de terminaison WCF ne lance-t-il pas une exception Max Clock Skew?
- 24. Utilisation d'un client SOAP de référence de service C# avec différents URI de point de terminaison
- 25. Aucun point de terminaison OpenID trouvé. - .Net OpenID
- 26. Point de terminaison d'ID ouvert pour Hotmail/Windows Live
- 27. dotnetopenauth, MVC2 et aucun point de terminaison OpenID trouvé
- 28. Diagnostics Trace: comment tracer un seul point de terminaison WCF
- 29. Modifier le point de terminaison ReaderQuotas par programme
- 30. Modifier par programme le point de terminaison d'un service Web
Pas de réponse, car je ne sais pas ce qui se passe, mais essayez un moniteur réseau pour obtenir plus d'informations. J'utilise tcpdump ou wireshark, ce qui est plus pratique. Ne pas oublier de vérifier votre code pour voir si les corruptions pourraient avoir causé ce problème (valgrind). – stefaanv
je vous remercie pour votre information. J'ai essayé tcpdump, mais j'ai échoué à savoir comment capturer les paquets. J'ai essayé "tcpdump -i eth0 'port myportnum'" mais il ne capturera pas anythin ... – iBacchus
Êtes-vous sûr de eth0? Vérifiez avec "ip addr". Avez-vous essayé en tant que root? Peut-être que vous n'avez pas la bonne permission. Les paramètres sont corrects, bien que j'ajoute aussi -s0 et -wtrace.cap pour que je puisse l'afficher avec wireshark. – stefaanv