Código:
Imports System.Net Imports System.Net.Sockets Imports System.Diagnostics Public Class Form1 Public tcpClient As New System.Net.Sockets.TcpClient() Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Try If tcpClient.GetStream.CanRead = True Then Send(msj.Text) End If Catch ex As Exception Debug.WriteLine("Error " & ex.Message) Connect("192.168.1.6") Send("MI text ") Debug.WriteLine("Conectando") End Try Debug.WriteLine("FIN ") End Sub Public Sub Connect(ByVal HOST_IP As String) tcpClient.Connect(HOST_IP, 45) End Sub Public Sub Send(ByVal data As String) Dim networkStream As NetworkStream = tcpClient.GetStream() If networkStream.CanWrite And networkStream.CanRead Then Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(data) networkStream.Write(sendBytes, 0, sendBytes.Length) Else If Not networkStream.CanRead Then Debug.WriteLine("cannot not write data to this stream") tcpClient.Close() Else If Not networkStream.CanWrite Then Debug.WriteLine("cannot read data from this stream") tcpClient.Close() End If End If End If End Sub Public Sub lee() ' Read the NetworkStream into a byte buffer. Dim bytes(tcpClient.ReceiveBufferSize) As Byte NetworkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize)) Dim returndata As String = Encoding.ASCII.GetString(bytes, 0, CInt(tcpClient.ReceiveBufferSize)) recv.Text = "Host dICVE : " + returndata End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click tcpClient.Close() End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click lee() End Sub End Class
Este ejemplo funciona perfecto. Button3_Click se conecta; Button4_Click cierra el socket y Button5_Click lee datos recividos.
Ahora el problema es que para leer lo que me dice le server (192.168.1.6) tengo que estar haciendo click en Button5_Click , en cambio con vb6 con dataarrival siempre quedaba activo, cómo puedo dejar siempre activa la escucha desde el socket? gracias