Probleme sur un tcpclient

Signaler
Messages postés
10
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
12 juin 2009
-
Messages postés
10
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
12 juin 2009
-
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

Messages postés
843
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
8
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)
Messages postés
10
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
12 juin 2009

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.