Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/11/2005, 13:51
rcl2121
 
Fecha de Ingreso: abril-2002
Mensajes: 36
Antigüedad: 22 años, 10 meses
Puntos: 0
Socket en visual basic .net

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