Threaded Server Question

R0ryG

New member
Joined
Mar 1, 2010
Messages
1
Programming Experience
1-3
Hi, I have programmed a Threaded TcpListener Server and I'm having trouble getting my ListBox populated with information from a TcpClient. So far I have managed to use Console.Write() to store data and text, but now I want to store that same data in the frmMain. I have tried the following:

VB.NET:
Console.Write("Waiting for a connection... ")
<-- Writes to Console (not what I want)

VB.NET:
frmMain.lbConsole.Items.Add("Waiting for a connection... ")
<-- Should Send "Waiting for a connection..." to the ListBox lbConsole but it doesnt? (This is what i want but it doesnt populate the listbox)


here's my code for the Server's frmMain, and MyTcpListener Class


frmMain Class:

VB.NET:
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports System.Threading

Public Class frmMain

    Dim aThread As Thread

    Public Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        aThread = New Thread(AddressOf Me.ThreadTask)
        aThread.IsBackground = True
        aThread.Start()

    End Sub

    Public Sub ThreadTask()

        MyTcpListener.Main()

    End Sub

End Class


MyTcpListener Class:

VB.NET:
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports System.Threading


Public Class MyTcpListener

    Public Shared Sub Main()

        Dim server As TcpListener
        server = Nothing
        Try
            ' Set the TcpListener on port 13000.
            Dim port As Int32 = 1337
            Dim localAddr As IPAddress = IPAddress.Any

            server = New TcpListener(localAddr, 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.Write("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 'Main

End Class 'MyTcpListener
 
Back
Top