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