Bueno, bueno, bueno, espero nun agobiar muchu a los foreros de esta sección, pero es que las dudas cada día me carcomen más el cuerpu.
En fin, voy pal granu.
Bien, resulta que estoy intentando hacer un nuevo Messenger. Y como tovía nun ando muy bien de sockets, estoy empezando con TcpListener y TcpClient.
Por lo visto, el TcpListener, escucha las conexiones de modo sincrónico, es decir, que cuando se conecta un segundo cliente, si todavía no se ha desconectado el primero, va acumulando las respuestas a enviar al segundo, hasta que se desconecte el primero.
Claro, eso ya me rompe mis esquemas. Entonces, estoy probando de esta manera:
Tengo este método:
*******************
Public Sub Recibiendo()
Dim client As TcpClient
Dim stream As NetworkStream
Dim i As Int32
Dim bytes(1024) As Byte
Dim data As String
While True
data = Nothing
client = Servidor.AcceptTcpClient
stream = client.GetStream()
' Loop to receive all the data sent by the client.
i = stream.Read(bytes, 0, bytes.Length)
While (i <> 0)
' Translate data bytes to a ASCII string.
data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
MsgBox(data.ToString)
i = stream.Read(bytes, 0, bytes.Length)
End While
End While
End Sub
*******************
Y en el load del TcpListener los siguiente:
*******************
Servidor.Start()
Hebra = New Thread(AddressOf Recibiendo)
Hebra.Start()
*******************
Bien, entonces lo que he pensado, ha sido, en el método Recibiendo, despues de la línea client = Servidor.AcceptTcpClient. Poner un hilo que salga de la hebra creada en el Load.
¿Creen que eso sería factible?, ¿Creen que funcionaría? y ... ¿Como podría hacerlo?, jejeje.
Ya llevo unos días intentando esto, pero ná, no soy capaz de hacer que se comuniquen dos clientes a la vez con el servidor. ¿A parte de la solución que les di, creen que tb iria bien usando el AsyncCallBack?
En fin, haber que opinan los gurus.
Saludos.
