none
Alarma cuando llegue un mensaje desde Servidor TCP RRS feed

  • Pregunta

  • Me llegan datos ocasionales  desde un servidor TCP, 

    necesito sacar una alarma cuando llegue un dato.

    Ahora tengo un temporizador que mira a ver si hay datos, queria eliminar el temporizador y que sea automatico

    martes, 21 de junio de 2016 7:51

Respuestas

  • Te pongo un pequeño ejemplo :

        Private Sub frmServerMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            listener = New System.Net.Sockets.TcpListener(System.Net.IPAddress.Any, 43001) ' TcpListener recibe conexiones por el puerto 43001
            listener.Start() 
            listenThread = New System.Threading.Thread(AddressOf doListen) 
            listenThread.IsBackground = True 
            listenThread.Start() 
    
            TimerWriteDelegate = AddressOf SendMessage
            tmrWrite = New System.Threading.Timer(TimerWriteDelegate, Open, 0, 1000)
        End Sub
    
        Private Sub doListen()
            Dim incomingClient As System.Net.Sockets.TcpClient
            Do
                incomingClient = listener.AcceptTcpClient ' Acepta la conexión de entrada
                Dim connClient As New ConnectedClient(incomingClient, Me) 
                AddHandler connClient.dataReceived, AddressOf Me.messageReceived
                clients.Add(connClient) 'Adds the connected client to the list of connected clients.
                Control.CheckForIllegalCrossThreadCalls = False
                connClient.Username = incomingClient.Client.RemoteEndPoint.ToString
            Loop
        End Sub
        Public Sub SendMessage()
            For Each cc As ConnectedClient In clients
                cc.SendMessage("Probando...")
            Next
        End Sub
        Public Sub removeClient(ByVal client As ConnectedClient)
            If clients.Contains(client) Then
                clients.Remove(client)
                client.Dispose()
                ListBox1.Items.Remove(client.Username & " connected.")
            End If
        End Sub
    
        Private Sub messageReceived(ByVal sender As ConnectedClient, ByVal message As String)
            'Ha recibido un mensjae de algún cliene
    
            Dim data() As String = message.Split("|"c) 'Split the message on each | and place in the string array.
            Select Case data(0)
                Case "CONECTAR"
                    If GetClientByName(data(1)) Is Nothing Then
                        sender.Username = data(1)
                    End If
                Case "DESCONECTAR"
                    removeClient(sender)
            End Select
    
        End Sub


    Saludos, Javier J

    • Marcado como respuesta javierroinbi martes, 21 de junio de 2016 18:20
    martes, 21 de junio de 2016 9:19