Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème arrêt thread c# [ Réseau & Internet / Client - Serveur ] (Passboss87)

mardi 9 octobre 2007 à 00:36:14 | Problème arrêt thread c#

Passboss87

Bonjour, je suis débutant en visual studio 2005.
J'ai voulu créer un chat serveur/client et tout marche quasiment.
Et j'arrive enfin au moment où je dois tester si un client est toujours connecté, j'ai du lire des tonnes et des tonnes de pages sur internet.
Je réalise donc ceci ( oui il est simple lol je ne suis qu'un petit nouveau ) :
        private void lect_mess()
        {
                Byte[] buffer = new Byte[1024];
                String data = null;

                Socket MySocket = (Socket)liste[liste.Count - 1];

                    while (Thread.CurrentThread.IsAlive)
                    {
                         if (MySocket.Connected)
                         {
                             if (MySocket.Poll(10, SelectMode.SelectRead) && MySocket.Available == 0)
                             {
                                 Thread.CurrentThread.Abort();
                             }
                             else
                             {
                                 MySocket.Receive(buffer);
                                 data = null;
                                 data = Encoding.ASCII.GetString(buffer);
                                 listBox1.Items.Add("Client" + i + " : " + data);
                             }
                         }
                    }
        }
Lorsque je déconnecte un client du serveur , mon serveur reçoit un dernier message et j'obtiens aussi un message d'erreur du style "débogage, envoyer le rapport d'erreurs ou ne pas envoyer" puis l'application se ferme.
Je lis ce rapport d'erreur qui est :
EventType : clr20r3     P1 : serveur.exe     P2 : 1.0.2837.42190    
P3 : 470b2d1c     P4 : mscorlib     P5 : 2.0.0.0     P6 : 461eee3d     P7 : 154b
P8 : 21     P9 : system.argumentoutofrange
 
et je n'y comprends rien, pouvez vous m'aider s'il vous plait? Je pense que l'erreur vient du
Thread.CurrentThread.Abort(); mais je n'arrive vraiment pas à résoudre ce problème, je n'en peux plus ! Merci d'avance pour les réponses.

mardi 9 octobre 2007 à 19:05:39 | Re : Problème arrêt thread c#

Passboss87

Personne ne peut m'aider ? s'il vous plaît ..

mercredi 10 octobre 2007 à 13:10:28 | Re : Problème arrêt thread c#

Nikoui

Mets ton code dans un bloc try/catch ou utilise le debugger pour regarder quelle exception est levée : cela te fournira la cause précise du problème (et donc sa solution ;)


Working as designed
www.nikoui.fr

mercredi 10 octobre 2007 à 21:21:57 | Re : Problème arrêt thread c#

Passboss87

Si j'ai bien compris ce que tu as dit, j'ai mis un bloc try\catch comme suit :

        private void lect_mess()
        {
                Byte[] buffer = new Byte[1024];
                String data = null;
                Socket MySocket = (Socket)liste[liste.Count - 1];

                    while (Thread.CurrentThread.IsAlive)
                    {
                       try
                         {
                             if (MySocket.Poll(10, SelectMode.SelectRead) && MySocket.Available == 0)
                             {
                                 Thread.CurrentThread.Abort();
                                 Thread.Sleep(0);
                             }
                             else
                             {
                                ...
                             }
                         }
                       catch ( Exception e )
                        {
                            Console.WriteLine("{0} Exception caught.", e);
                        }            
                    }
        }
Quand je le compile je n'ai aucune erreur, mais maintenant que dois-je faire ? désolé je ne comprends pas encore tres bien ce langage malgré ce que j'ai pu lire.


jeudi 11 octobre 2007 à 20:43:26 | Re : Problème arrêt thread c#

bidou_01

Bonsoir,

L'appel de la méthode Abort() sur le thread courant (CurrentThread) va tenter d'arrêter le thread courant, le Thread.Sleep(0); ne sert pas à grand chose derrière. Mais là, il est normal que ton application s'arrête car tu demandes l'arrêt du Thread Principal. Logiquement, au moment ou ta condition  if (MySocket.Poll(10, SelectMode.SelectRead) && MySocket.Available == 0) est validée, tu dois avoir une ligne dans la console correspondant à cette instruction  Console.WriteLine("{0} Exception caught.", e); et ton appli doit se fermer.

Cordialement,


vendredi 12 octobre 2007 à 14:05:48 | Re : Problème arrêt thread c#

Passboss87

Merci pour la réponse,
.. il y a une question que je me pose, quelle est la différence entre exécuter l'exécutable dans le dossier bin\debug et l'exécuter a l'aide du debug dans le visual studio 2005? car quand j'exécute l'exécutable il fonctionne, mais bug au bout de plusieurs connexions/déconnexions du client tandis que quand j'utilise le debug, je n'arrive carrément pas a les connecter donc je ne peux pas voir la ligne dans la console comme tu me le dis.



Cette discussion est classé dans : serveur, data, client, thread, mysocket


Répondre à ce message

Sujets en rapport avec ce message

Thread + NetworkStream [ par JuS ] Je vais vous exposer mon problème (c'est un peu long à lire et à comprendre...)Je programme un programme client/serveur.Le client, en C#, communique a Client/Serveur - Asynchrone... [ par DaOuch ] Bonjour à tous.Je voudrais faire un logiciel de communication entre client et serveur mais que cette communication soit asynchrone.J'ai utilisé un Thr [C#][Sockets] Ecouter plusieurs clients [ par mecano14 ] Bonjour,Je travaille en ce moment sur un petit programme de chatJe recontre un problème pour la connection de plusieurs clientsLorsqu'un seul client s Threads [ par Cisaks ] Bonjour ! Donc voici mon probleme. J'ai un programme qui appel une thread pour activer un serveur asynchrone, elle mémé a deux autres threads qui sont Envoyer le contenu d'un edit [ par underdog08 ] Bonjour,J'ai besoin de realiser un serveur client udp et c'est la premiere foi que je programme  en c#!J'arrive à transmettre des données lors de la c Retourner une valeur dans un Void [ par kerma26 ] Bonjour tout le monde,Voila mon problème, j'ai téléchargé un code source sur d'un client-serveur tous les deux sont en mode console (C#), donc moi ce optenir l'adresse publique de sa machine c# [ par 10demon10 ] Bonjour à tous Voila j'ai une nouvelle problématique sur mes petites socket, j'ai no-ip de configurer comme il faut ac mon modem-routeur (les ports et bonjour, je reçois des packets du serveur, mes je ni arrive pas à en envoyer , merci de m'aider [ par SpeedGear ] using System; using client / serveur = > avec adresse ip public [ par 10demon10 ] Bonjour à tousVoila j'ai modifié une source de client / serveur trouver sur codes sources et tous fonctionne correctement (ajout de plusieurs clients Pb. avec Socket TCP Serveur + Multi Clients [ par nrobin ] Bonjour,j'effectue un stage et l'on m'a demandé de migrer une application VB6 en C# sous formes de diverses classes de manière à pouvoir l'implémenter


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,218 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.