Se connecter / S'enregistrer
Votre question

[C#] Application Client/Serveur TCP detection perte de connexion

Tags :
  • Connexion
  • Thread
  • Serveur
  • Programmation
Dernière réponse : dans Programmation
a b L Programmation
25 Mai 2012 14:46:30

Bonjour,

Pour le moment j'ai une application Client et une Application serveur !
A chaque fois qu'un client ouvre une connexion sur le serveur, je lance un thread ...
Je voudrais que lorsque le serveur perd la connexion avec le client, cela efface son pseudo de la listbox !

( voila le debut du thread )
  1. private void HandleClienComm(object client)
  2. {
  3. TcpClient tcpClient = (TcpClient) client;
  4. NetworkStream clientStream = tcpClient.GetStream();
  5.  
  6. byte[] message = new byte[4096];
  7. int bytesRead;
  8.  
  9. string pseudo = "";
  10.  
  11. while (true)
  12. {
  13. bytesRead = 0;
  14.  
  15. if (!tcpClient.Connected)
  16. {
  17. this.Invoke((Action)(() =>
  18. {
  19. try
  20. {
  21. listBox2.Items.Remove(pseudo);
  22. }
  23. catch (Exception)
  24. {
  25.  
  26. }
  27. }));
  28. this.Close();
  29. }
  30.  
  31. try
  32. {
  33. bytesRead = clientStream.Read(message, 0, 4096);
  34. }
  35. catch (Exception)
  36. {
  37. break;
  38. }
  39.  
  40. if(bytesRead == 0)
  41. {
  42. break;
  43. }
  44. ....


En fais avec ce morceau de code, lorsque je le passe au debugger, VS ce stop sur try catch ( lignes 31 à 38 ) et ne boucle pas sur le while ....
du coup bas je ne peut pas savoir si mon client est toujours la ou pas !

Comment faire ?

Autres pages sur : application client serveur tcp detection perte connexion

a b L Programmation
28 Mai 2012 00:45:27

Oui, lorsque tu as l'erreur de socket, tu as une exception dans le read. Là, tu fais un break qui faire sortir de la boucle.
Si tu souhaite ne pas forcer la sortie de boucle, enlève le break.
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS