Bonjour.

J'ai un petit programme Visual C# qui me permet d'envoyer deux données distinct à un serveur TCP.
Mon code s'apparente à sa:

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
32
33
34
35
36
37
38
39
40
41
 
System.Net.Sockets.TcpClient tcpclient = null;
            try
            {
                /*script de lecture*/
                //ip
                string urlSave = "C:\\SaveIP.txt";
                StreamReader smIP = new StreamReader(urlSave);
                string textIP = smIP.ReadLine();
 
                /*script de'envoi*/
                //teste co
                tcpclient = new TcpClient(textIP, 9999);
                AfichTime.Text = "Connection Ok";
 
                //récupération des variable des box
                string EnvoiData1 = mData1.Text;
                string EnvoiData2 = mData2.Text;
 
                try
                {
                    //trame 
                    NetworkStream nstream = tcpclient.GetStream();
                    StreamWriter sw = new StreamWriter(nstream);//ecrir un flu
                    StreamReader sr = new StreamReader(nstream);//lire un flux
 
                    sw.Write("Hello! Data1: {0} Data2: {1}", EnvoiData1, EnvoiData2);
                    sw.Flush();
 
                    AfichTime.Text = "Envoi!";
                }
                catch
                {
                    AfichTime.Text = "Erreur envoi!";
                }
 
            }
            catch
            {
                AfichTime.Text = "Erreur de connexion";
            }
Mon problème réside dans le fait que je doit cliquer plusieurs fois sur le bouton d'envoi pour que le serveur les reçoivent. mais j'aimerais envoyer une seul trame. Je ne comprend pas pourquoi la méthode Flush() ne force pas l'envoie immédiat de la trame.

Merci de tout coup de pouce.