Bonjour

Je me suis fait un serveur TCP qui envoi des informations à une autre machine, ca fonctionne mais je me suis étonné que le délai de timeout ne soit pas respecté (10s en tout)

voici mon code ou je configure un timout en écriture et en lecture de 1000 (1seconde)
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
42
43
44
try
            {
                bgWOrdreSimple_Parametres args = (bgWOrdreSimple_Parametres)e.Argument;
 
                using (TcpClient client = new TcpClient(args.IP, args.port)) // ouverture du socket
                {
                    using (NetworkStream stream = client.GetStream())//récupération du stream du socket
                    {
                        args.data[0] = 255; // c'est un ordre on a donc 255
 
                        stream.WriteTimeout = args.WriteTimeOut ;  //réglage des timeout                        
                        stream.ReadTimeout = args.ReadTimeOut ;
 
                        int ResteAEnvoyer = args.data.Length;
                        int PositionDansBuffer = 0 ;
                        int Aenvoyer = 0;
                        while (ResteAEnvoyer > 0)
                        {
                            Aenvoyer = ResteAEnvoyer;
 
                            if (ResteAEnvoyer > 250)
                                    Aenvoyer = 250; //on envoi maximum 250o à la fois
 
                            stream.Write(args.data, PositionDansBuffer, Aenvoyer);
                            PositionDansBuffer += Aenvoyer;
                            ResteAEnvoyer -= Aenvoyer;
                        }
 
                        if (Aenvoyer == 250) // si la dernière trame faisait pile 250o on envoit un saut de ligne en plus (IndusBee se sert de 250 pour savoir s'il doit attendre la suite d'une trame
                        {
                            byte[] trameCourte = System.Text.Encoding.ASCII.GetBytes("\r\n");
                            stream.Write(trameCourte, 0, trameCourte.Length);
                        }
 
                        // Buffer to store the response bytes.
                        byte[] LaReponse = new Byte[512];
 
                        // attente réponse le temps du timeout
                        Int32 bytes = stream.Read(LaReponse, 0, LaReponse.Length);
 
                        responseString = System.Text.Encoding.ASCII.GetString(LaReponse, 0, bytes);
                    }
                }               
            }
Je viens de me rendre compte via la console du serveur que ce code fait 2 retry (3 tentatives en tout) avant de me lever le timeout (d'où la durée largement supérieure à 1s).

Je n'arrive pas à trouver de paramètres qui règlent ces retry, que j'aimerais supprimer pour que mes timeout soient respectés.

Merci par avance pour votre aide