Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionDonc pour comprendre le principe, je me suis aidé de pas mal de sites là-dessus, mais la plupart sont trop vagues et les codes source que je trouve sont illisibles car ce que je recherche est noyé dans le reste du code.Donc merci au lieu de me rediriger vers Google et faisant le malin tu ferai mieux de te demander _pourquoi_ j'ai demandé de l'aide.
Private Function lecture_flux(ByVal tcpcl As TcpClient) As String Try Dim recup_encode(tcpcl.ReceiveBufferSize) As Byte flux.Read(recup_encode, 0, CInt(tcpcl.ReceiveBufferSize)) MsgBox("Lecture de " & Encoding.ASCII.GetString(recup_encode) & " " & tcpcl.ReceiveBufferSize) Return Encoding.ASCII.GetString(recup_encode) Catch ex As Exception MsgBox("Erreur lors de la lecture du flux : " & ex.Message) End Try Return 0 End Function Private Sub ecriture_flux(ByVal tcpcl As TcpClient, ByVal envoi As String) Try Dim encode(tcpcl.ReceiveBufferSize) As Byte encode = Encoding.ASCII.GetBytes(envoi) Dim flux As NetworkStream flux = tcpcl.GetStream() flux.Write(encode, 0, encode.Length) Catch ex As Exception MsgBox("Erreur lors de l'écriture sur le flux : " & ex.Message) End Try End Sub
Private Sub rafraichir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rafraichir.Click If nu_j <> j_en_cours Then ' si c'est au joueur de jouer, pas la peine de tout faire planter Dim lecture As String lecture = lecture_flux() log.Items.Add("Données reçues : " & lecture & " màj...") ' on met à jour les cases : ' 1) la case de destination maj_case(Val(lecture(2)), Val(lecture(3)), tab_pieces(Val(lecture(0)), Val(lecture(1))), j_en_cours) ' 2) la case de départ maj_case_abandonnee(Val(lecture(0)), Val(lecture(1))) log.Items.Add("Damier mis à jour. A votre tour") nvo_coup() End If End SubEt ici la partie serveur :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim lecture As String If j_en_cours = 1 Then lecture = lecture_flux(tcp_j1) MsgBox(lecture) If lecture <> "0" And lecture <> "" Then ' si la lecture a renvoyé quelque chose, c'est que le joueur a joué log.Items.Add("Le joueur 1 a joué : " & lecture) j_en_cours = 2 ' changement de joueur en cours log.Items.Add("Au joueur 2 de jouer") ' envoi des informations au joueur 2 log.Items.Add("Envoi des informations au joueur 2") ecriture_flux(tcp_j2, lecture) End If Else lecture = lecture_flux(tcp_j2) MsgBox(lecture) If lecture <> "0" And lecture <> "" Then log.Items.Add("Le joueur 2 a joué : " & lecture) j_en_cours = 1 log.Items.Add("Au joueur 1 de jouer") ' envoi des informations au joueur 1 log.Items.Add("Envoi des informations au joueur 2") ecriture_flux(tcp_j1, lecture) End If End If End SubCe n'est pas un problème de réception par le serveur puisque dans le log il semble capter la bonne information et la retransmet. Je me demande s'il ne s'agit pas d'un problème lors de l'écriture sur le flux, mais je cherche toujours en quoi ça change des premiers coups :s