Bonjour a tous,

J'ai un petit soucis alors que je me fais des classes de gestion serveur/client,
Je crée mon serveur puis je lance le thread sensé recevoir mais il ne passe qu'une seule fois.
Pour ca j'ai fait une méthode avec un délégué pour manipuler mes données plus facilement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
public void LaunchThread( ReceiveDelegateAction receiveAction )
{
     ReceiveAction = receiveAction;
     Thread = new Thread( new ThreadStart( ReceiveActionLauncher ) );
     Thread.Start();
     _ThreadStarted = true;
}
Mes attributs importants et mon délégué sont définis comme cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
protected Socket Socket;
 
protected Thread Thread;
 
protected ReceiveDelegateAction ReceiveAction;
 
public delegate void ReceiveDelegateAction( object data );
Et enfin la méthode ReceiveActionLauncher ce qui est threadée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
private void ReceiveActionLauncher()
{
      string data = Receive();
      Console.WriteLine( "ReceiveActionLauncher : " + data );
      ReceiveAction( data );
      Thread.Sleep( 50 );
}
Enfin la méthode Receive() lit les données :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
public string Receive()
{
      string data = "";
      if ( !Socket.Connected )
           return data;
      int size = 0;
      while ( ( size = Socket.Receive( Buffer ) ) != 0 )
      {
          data += Buffer[size];
      }
      Console.WriteLine( "Receive : " + data );
      return data;
}
Et je n'ai qu'un seul passage dans ReceiveActionLauncher.

Si on me demande pourquoi je fais ca, c'est pour pouvoir faire des myTextBox.Text = data; hors de ma classe sensée être le plus générique possible pour la réutiliser ailleur :p

Et mes connexions sont bonnes car quand je lace mon client, la connexion est acceptée.

Je ne sais pas trop d'où ca peut venir.

Merci de votre aide.