Bonjour,

Je rencontre un souci avec mon application. Un serveur doit recevoir des instructions de clients et leur renvoyer le résultat.

Coté client, le code (j'ai retiré tous les tests pour simplifier):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
Thread threadEnvoiDemande = new Thread(gestionEnvoisDemandes);
threadEnvoiDemande.Start();
 
private void gestionEnvoisDemandes() {
	while(condition) {
		//attente d'un évènement
		NetworkStream stream = _connexionServeur.GetStream(); //_connexionServeur est un TcpClient
		using (BinaryWriter writer = new BinaryWriter(stream)) {
			JObject message = miseEnFormeDemande(param);
			writer.Write(message.ToString());
		}
	}
}
Coté serveur:
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
23
24
25
26
27
28
29
30
31
 
TcpListener _listener = new TcpListener(IPAddress.Any, 1337);
_listener.Start();
 
Thread threadListener = new Thread(listenForClients);
threadListener.Start();
 
private void listenForClients() {
    while (!_conditionArret) {
        //TODO: event wait
        if (_listener.Pending()) { //Si des connexions sont en attente
 
            _listener.BeginAcceptTcpClient(connexionAcceptee, _listener);
        }
 
    }
}
 
private void connexionAcceptee(IAsyncResult result) {
    TcpClient client = _listener.EndAcceptTcpClient(result);
 
    //initialisation du thread attendant les connexions clientes
    Thread threadClient = new Thread(() => gestionConnexionClient(client));
    threadClient.Start();
}
 
private void gestionConnexionClient(TcpClient client) {
    NetworkStream stream = client.GetStream();
    BinaryReader reader = new BinaryReader(stream);
    if (reader.PeekChar() == -1) return; //toujours égal à -1
}
Le problème: Coté serveur, la ligne: if (reader.PeekChar() == -1) return; est toujours égale à true, donc le stream semble vide.

Précisions:
- j'utilise le même stream coté client et serveur. Je me connecte au serveur depuis le client, créé un stream et récupère le stream coté serveur avec le TcpClient.GetStream().
- j'utilise le même port coté client et serveur
- je teste en local pour le moment, 127.0.0.1:1337 en adresse de connexion au serveur

N'hésitez pas à me demander des précisions.

Merci