VladDracula
Messages postés10Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention12 juin 2009
-
19 oct. 2008 à 17:51
VladDracula
Messages postés10Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention12 juin 2009
-
20 oct. 2008 à 17:32
Hello !
J'ai un prob au niveau d'une connexion tcpclient. Je me connecte le server me vois, mais lorsque je recois une info sa bloque. Voici ce que j'ai fait :
Private MyThread As New Thread(AddressOf DataArrival) 'New ThreadStart(AddressOf DataArrival))
Dim Client As New TcpClient
Dim mem As NetworkStream
Public Sub DataArrival()
Do While SroClient.Connected
mem = SroClient.GetStream
If mem.CanRead Then
Dim buffer(SroClient.ReceiveBufferSize) As Byte
mem.Read(buffer, 1, SroClient.ReceiveBufferSize)
Dim str As String = Encoding.ASCII.GetString(buffer)
'ParseDataGame(buffer)
End If
Loop
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Client.Connect("127.0.0.1", 22580)
MyThread.Start()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Donc ça bloque plus precisément ici :
' mem.Read(buffer, 1, SroClient.ReceiveBufferSize)'
Je comprend pas pourquoi, j'ai regardé plein de source et elle marche toute ainsi. Cela vient pas du server j'ai tester dans un autre language ( auto-it : un pote m'a fait ca en 2sec) et sa marche ...
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 20 oct. 2008 à 01:28
Salut,
Quoi ça bloque?
C'est normal que ça bloque, Read est une fonction bloquante que je sache... elle bloque jusqu'à ce que des données ont été reçues...
Et d'ailleurs c'est bien pour ça qu'il est utile d'utiliser un autre thread, pour éviter de bloquer le thread principal (l'interface graphique)
VladDracula
Messages postés10Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention12 juin 2009 20 oct. 2008 à 17:32
hum , je me suis mal expliqué je pense ^^
En faite le problème vient du faite que je lance le thread mais que le programme ne veux pas aller plus loin que "mem.Read(buffer, 1, SroClient.ReceiveBufferSize)" il se stoppe et ne continue pas plus loin, même avec un thread.