Probleme sur un tcpclient

VladDracula Messages postés 10 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 12 juin 2009 - 19 oct. 2008 à 17:51
VladDracula Messages postés 10 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 12 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 ...

Merci

2 réponses

Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
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)
0
VladDracula Messages postés 10 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 12 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.
0
Rejoignez-nous