Link to home
Start Free TrialLog in
Avatar of tonelm54
tonelm54

asked on

Multiple Connection TCP Listener

Good evening,
Ive spent most of the day with this, and cant figure it out.

Im trying to write a program, that will listen to port 115, start a new thread to deal with the communication, and then then start listening for another port.

The original code I found from VB.net Cookbook, does not have the lines 'Listener.Start()' and 'Listener.Stop()', but wothout these I get run-time errors, saying they need to listen.

Any ideas what Im doing wrong in this code, to pass the communication to the tread??

Thanks in advance
---------------------------------------------------------------------------------------------------------------
Module1.vb
---------------------------------------------------------------------------------------------------------------
Imports System.Net.Sockets
Imports System.IO
 
Module Module1
    Dim Listener As New TcpListener(System.Net.IPAddress.Parse("127.0.0.1"), "115")
    Sub Main()
        Dim ClientNum As Integer
        Do
            Try
                ' Wait for a connection request,
                ' and return a TcpClient initialized for communication
                Listener.Start()
 
                Dim Client As TcpClient = Listener.AcceptTcpClient()
                Console.WriteLine("Server: Connection accepted.")
                ' Create a new object to handle this connection.
                ClientNum += 1
                Dim Handler As New ClientHandler(Client, "Client " & ClientNum.ToString())
                ' Start this object working on another thread.
                Dim HandlerThread As New System.Threading.Thread(AddressOf Handler.Start)
                HandlerThread.IsBackground = True
                HandlerThread.Start()
                Listener.Stop()
                ' (You could also add the Handler and HandlerThread to
                ' a collection to track client sessions.)
            Catch Err As Exception
                Console.WriteLine(Err.ToString())
            End Try
        Loop
    End Sub
 
End Module
 
 
 
 
 
 
 
 
 
 
---------------------------------------------------------------------------------------------------------------
ClientHandler.vb
---------------------------------------------------------------------------------------------------------------
Imports System.Net.Sockets
Imports System.IO
 
Public Class ServerMessages
    Public Const AcknowledgeOK As String = "OK"
    Public Const AcknowledgeCancel As String = "Cancel"
    Public Const Disconnect As String = "Bye"
End Class
Public Class ClientMessages
    Public Const RequestConnect As String = "Hello"
    Public Const Disconnect As String = "Bye"
End Class
 
Public Class ClientHandler
    Private Client As TcpClient
    Private ID As String
    Public Sub New(ByVal client As TcpClient, ByVal ID As String)
        Me.Client = client
        Me.ID = ID
    End Sub
    Public Sub Start()
        ' Retrieve the network stream.
        Dim Stream As NetworkStream = Client.GetStream()
        ' Create a BinaryWriter for writing to the stream.
        Dim w As New BinaryWriter(Stream)
        ' Create a BinaryReader for reading from the stream.
        Dim r As New BinaryReader(Stream)
        Console.WriteLine("-" & r.ReadString)
 
        If r.ReadString() = ClientMessages.RequestConnect Then
            w.Write(ServerMessages.AcknowledgeOK)
            Console.WriteLine(ID & ": Connection completed.")
            Do
                console.writeline(r.ReadString())
            Loop
            Console.WriteLine(ID & ": Disconnect request received.")
            w.Write(ServerMessages.Disconnect)
        Else
            Console.WriteLine(ID & ": Could not complete connection.")
        End If
        ' Close the connection socket.
        Client.Close()
        Console.WriteLine(ID & ": Client connection closed.")
        Console.ReadLine()
    End Sub
End Class

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of Nasir Razzaq
Nasir Razzaq
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial