J'ai un programme C++ utilisant winsock2. Je voudrais savoir comment se ferme la connexion de quelqu'un avec mon programme.C++ winsock2, comment savoir quand une connexion se ferme
2
A
Répondre
5
Utilisez select pour attendre la lecture sur le socket; lorsque le socket est fermé, winsock doit le signaler comme lisible. La réception de la socket vous donnera alors 0 octet, vous indiquant que le socket a été fermé.
0
int received_bytes = recv(_socket, buffer, sizeof(buffer)-1,0);
if(received_bytes > 0)
{
//data received
}
else if (received_bytes == 0)
{
//connection closed
}
else
{
//wait for more data
}
Questions connexes
- 1. La connexion mysql se ferme après un certain temps? (PHP)
- 2. Comment savoir quand Windows est inactif
- 3. Winsock2.h erreur d'inclusion
- 4. Comment savoir quand nosetest s'exécute par programme
- 5. Comment savoir quand Big O est Logarithmique?
- 6. glade aboutDialog ne se ferme pas
- 7. comment savoir quand une réponse dde est terminée?
- 8. Comment savoir quand une animation UITableView est terminée?
- 9. Comment savoir quand envoyer une réponse 304 non modifiée
- 10. .NET StreamReader ne se ferme pas
- 11. GXT KeyListener.componentKeyDown() se ferme immédiatement MessageBox.alert()
- 12. Comment forcer Boutons, TextBoxes à repeindre sur formulaire après qu'un MessageBox se ferme en C#
- 13. Comment savoir quand il y a trop de connexions SQL?
- 14. Connexion à SQL ne se ferme pas après appel à DB dans ASP.NET
- 15. Comment se débarrasser des processus fils Java lorsque mon application Java se ferme/se bloque?
- 16. Comment savoir quand l'objet est envoyé message de libération?
- 17. Comment savoir quand un élément XAML est terminé chargement
- 18. Comment savoir quand un winform est chargé par Process.Start?
- 19. Comment détecter quand l'application se termine?
- 20. Comment savoir quand j'ai arrêté de faire défiler un TScrollBar?
- 21. JavaScript: Savoir quand une image est complètement chargée
- 22. rappel Javascript pour savoir quand une image est chargée
- 23. Comment savoir quand un contrôle va être caché
- 24. Mon application se ferme sans aucun avertissement ou message d'erreur
- 25. Comment forcer une connexion CIFS à se démonter
- 26. .NET SslStream ne ferme pas correctement la connexion TLS
- 27. Comment savoir quand une table Oracle a été mise à jour la dernière fois
- 28. Comment puis-je savoir où vivent les scripts de connexion?
- 29. Delphi: Comment savoir quand un TEdit change de taille?
- 30. .NET: Comment savoir quand la sérialisation est terminée?
Lorsque vous vérifiez la valeur de retour de 'recv' il peut revenir * soit * 0, ce qui signifie que la prise a été fermée avec succès (comme vous le décrivez), ou' SOCKET_ERROR' qui vous indique la prise n'a pas été fermée proprement (par exemple timeout) ou une erreur s'est produite de votre côté. Les deux conditions doivent être vérifiées afin d'attraper tous les cas où la connexion est fermée. – GRB