Unable to send logs to remote listener application in VB.NET

Hi,

I am trying to send logs to a remote listening application on port 514…

I have configured action and topics to be sent, but I am not getting any connections to my application that I have built using VB.NET

Below the configuration on my Mikrotik:

[admin@MikroTik] /system logging> export
# jan/10/2015 17:59:02 by RouterOS 6.24
# software id = JZHP-NVRD
#
/system logging action
set 0 memory-lines=100
set 1 disk-lines-per-file=100
set 3 bsd-syslog=yes remote=192.168.1.10 remote-port=23 src-address=0.0.0.0 \
    syslog-facility=local0
/system logging
add action=remote topics=!async
add action=echo topics=!async
add action=remote topics=system,info

Also here is the code I use on my VB.NET project:

Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text

Module Module1

    Sub Main()
        Dim server As TcpListener
        server = Nothing
        Try
            ' Set the TcpListener on port 13000. 
            Dim port As Int32 = 23
            'Dim localAddr As IPAddress = IPAddress.Parse("192.168.1.10")
            'server = New TcpListener(localAddr, port)

            Dim localAddr As IPAddress()
            localAddr = Dns.GetHostAddresses(Dns.GetHostName.ToString)
            Console.WriteLine("Listening on IP: " & localAddr(5).ToString)
            server = New TcpListener(localAddr(5), port)

            ' Start listening for client requests.
            server.Start()

            ' Buffer for reading data 
            Dim bytes(1024) As Byte
            Dim data As String = Nothing

            ' Enter the listening loop. 
            While True
                Console.WriteLine("Waiting for a connection... ")

                ' Perform a blocking call to accept requests. 
                ' You could also user server.AcceptSocket() here. 
                Dim client As TcpClient = server.AcceptTcpClient()
                Console.WriteLine("Connected!")

                data = Nothing

                ' Get a stream object for reading and writing 
                Dim stream As NetworkStream = client.GetStream()

                Dim i As Int32

                ' 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)
                    Console.WriteLine("Received: {0}", data)

                    ' Process the data sent by the client.
                    'data = data.ToUpper()
                    'Dim msg As Byte() = System.Text.Encoding.ASCII.GetBytes(data)

                    ' Send back a response.
                    'stream.Write(msg, 0, msg.Length)
                    'Console.WriteLine("Sent: {0}", data)

                    i = stream.Read(bytes, 0, bytes.Length)

                End While

                ' Shutdown and end connection
                client.Close()
            End While
        Catch e As SocketException
            Console.WriteLine("SocketException: {0}", e)
        Finally
            server.Stop()
        End Try

        Console.WriteLine(ControlChars.Cr + "Hit enter to continue....")
        Console.Read()
    End Sub

End Module

I appreciate any help or guidance on this!

Regards

Syslog uses UDP, not TCP

Yes, I figured that out after a while :slight_smile:

My bad for rushing without paying attention to the protocol.