Bonjour,
J'ai un soucis avec mon code, je suis en train de faire un serveur multiclient en c# et je n'arrive pas a comprendre pourquoi le thread d'écoute du flux me sort que des '0'.
Voici le bout de code qui m'embête :
Le code suivante se trouve dans le classe CThreadHandle
Stream est un attribut de ma classe et cette méthode est exécutée dans un thread.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 private void Execute () { while (true) //Thread.CurrentThread.IsAlive { TransmittionStat = E_STREAM.E_STREAM_RECEIVE; if (Stream.Read (RxBuffer, 0, RxLenght) == RxLenght) { MessageBox.Show (RxBuffer[0].ToString()); ClientData.PreparetoUse (RxBuffer); TransmittionStat = E_STREAM.E_STREAM_READY_TO_FOLLOW; } else { TransmittionStat = E_STREAM.E_STREAM_DISCONNECTED; } Thread.Sleep (1); // wait in ms } }
Pour plus de compréhension, voici le code de ma classe CServer qui accepte et démarre le thread CThreadHandle.Execute() :
Je voudrais savoir comment je dois faire pour lire les données du flux correctement. J'ai déjà passé du temps à diagnostiqué mon p'blème et je crois qu'il doit se présenter dans le codage de mon thread car lire les données du flux a l'extérieur du thread, p-e dans la méthode d'initialisation, fonctionne correctement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 private void WaitforConnections () { int connections = 0; CThreadsHandle tempHandler; CNetData data; while (Thread.CurrentThread.IsAlive) { client = Listener.AcceptTcpClient(); tempHandler = new CThreadsHandle (client.GetStream()); ThreadHandler.Add (tempHandler); data = new CNetData (); ClientData.Add (data); ThreadHandler[connections].Start (); if (connections+1 < MaxStream) { connections++; } else { StopListening (); } NbrofClient = connections; Thread.Sleep (100); // in ms } }
Merci pour votre aide et ne m'en voulez pas s'il vous plais, je ne connais pas très bien voir pas du tout les threads...
A bientôt !
Partager