Bonjour
J'ai un problème assez conséquent sur mon programme Serveur. En effet, je créer un Thread d'écoute à chaque connexion de nouveau client. Voici ce Thread : (allégé au maximum)
En gros : pour chaque client qui se connecte, il reçoit le premier Id d'une plage qui lui est défini. Le Thread se met en pause tant que je n'ai pas envoyé "OK" de mon client. Une fois que j'envoie "OK" de mon client, mon serveur lui renvoie un nouveau id de la plage et ainsi de suite (voir capture ci dessous)
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 Private Sub start_listen2(ByVal clientNumber As Integer) Dim cod_char As String If (clientNumber = 1) Then cod_char = codeChariottextBox.Text Else cod_char = codeChariottextBox1.Text End If Dim idinstruction as integer Dim Reader As OracleDataReader Do Dim Requete As String = **** Dim Commande As New OracleCommand(Requete, ConnexionOracle) Try Reader = Commande.ExecuteReader() While Reader.Read() idinstruction = Reader(0).ToString() comandeTab(clientNumber) = Nothing comandeTab(clientNumber) = idinstruction End While Reader.Close() Catch ex As Exception / Finally / End Try SendMsgToClient(comandeTab(clientNumber), clientNumber) comandeTab(clientNumber) = Nothing While (reponseTab(clientNumber) <> "OK") System.Threading.Thread.Sleep(1) End While reponseTab(clientNumber) = Nothing affichTerm(id) Loop While (instru <> "FTOUR") End Sub
Mon soucis : lorsqu'un second client(2 par exemple) se connecte (avec une plage d'ID qui lui est propre) il va en premier lieu recevoir son ID et l'ID en cours de la plage de l'autre client(1). Une fois que j'ai cliqué sur OK, il reçoit bien ses propres ID tant que je clique sur OK. (voir capture ci dessous)
Si jamais je renvoie Ok avec mon autre client(1), celui-ci va d'abord recevoir le dernier ID envoyé au client 2 puis les bons ID liés au client (1).
En gros, j'ai un peu l'impression que mon tampon de Reader envoie dans la bonne case du tableau comandeTab(ClientNumber) son ancienne valeur Readé et pas la nouvelle.
J’espère que c'est assez clair comme description de problème.
BB59
Partager