client/server

  • Thread starter Thread starter Henk
  • Start date Start date
Hi,
The way you would handle multple clients is by creating multiple threads
on the server side. Basically you would run your server in a infinite while
loop and as soon as it accepts a connection, it will crearte a new thread
and pass the Tcpclient object as a paramenter to this thread which will
then communicate with the client, while the main thread in the server will
continue to listen incoming connections.

While (true)
{
Wait for Connection
Create thread to handle the client
}

This is generally how you would handle multple clients. I shall try and see
if i can put a sample together.

Thanks
Anand



Anand Balasubramanian
Microsoft, Visual Basic .NET

This posting is provided "AS IS" with no warranties, and confers no rights.
Please reply to newsgroups only. Thanks
 
Hi,
Here is how the server should be

Main Module
===========
Imports System.Net.Sockets
Imports System.Text
Class TCPSrv
Shared Sub Main()
' Must listen on correct port- must be same as port client wants to
connect on.
Const portNumber As Integer = 8000
Dim tcpListener As New TcpListener(portNumber)
Dim ct As Integer

tcpListener.Start()
Console.WriteLine("Waiting for connection...")
Try
'Accept the pending client connection and return 'a
TcpClient initialized for communication.

ct = 0
While (True)

Dim tcpClient As TcpClient = tcpListener.AcceptTcpClient()
Console.WriteLine("Connection accepted.")

Dim tmp As New WorkerThread(tcpClient, ct)
ct += 1

Dim thrd As New System.Threading.Thread(AddressOf
tmp.workerMethod)
thrd.Start()

End While

Catch e As Exception
Console.WriteLine(e.ToString())
Console.ReadLine()
End Try
End Sub
End Class

The WorkerThread Class
======================
Imports System.Net.Sockets
Imports System.Text


Public Class WorkerThread
Private tcpClient As tcpClient
Private clientnumber As Integer

Sub New(ByRef tcpCli As tcpClient, ByVal ct As Integer)
tcpClient = tcpCli
clientnumber = ct
End Sub

Sub workerMethod()
Dim networkStream As NetworkStream = tcpClient.GetStream()
' Read the stream into a byte array
Dim bytes(tcpClient.ReceiveBufferSize) As Byte
networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
' Return the data received from the client to the console.
Dim clientdata As String = Encoding.ASCII.GetString(bytes)
Console.WriteLine(("Client sent: " + clientdata))
Dim responseString As String = "Connected to server."
Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(responseString)
networkStream.Write(sendBytes, 0, sendBytes.Length)
Console.WriteLine(("Message Sent /> : " + responseString + "Client
number" + clientnumber.ToString))
'Any communication with the remote client using the TcpClient can
go here.
'Close TcpListener and TcpClient.
tcpClient.Close()
Console.WriteLine("exit")
End Sub
End Class

I hope this helps.
Thanks



Anand Balasubramanian
Microsoft, Visual Basic .NET

This posting is provided "AS IS" with no warranties, and confers no rights.
Please reply to newsgroups only. Thanks
 
Back
Top