Multiple socket clients

M

Markgoldin

Here is code I am using to create a socket listener:
public void Run()

{

go = true;

Random rand = new Random();

// Buffer for reading data

Byte[] bytes = new Byte[1024];

String data = null;

while (go)

{

TcpClient tcpc = FromAnotherClass.tcpl.AcceptTcpClient(); //accept
connection

data = null;

// Get a stream object for reading and writing

NetworkStream stream = tcpc.GetStream();

// Loop to receive all the data sent by the client.

int i;

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

{

// Translate data bytes to a ASCII string.

data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);

// Process the data sent by the client.

if (data != "")

{

System.Console.WriteLine(data);

}

}

Thread.Sleep(1000 + rand.Next(2000));

}

}

My question is can this code handle connections from multiple clients?

Or should I have a separate listener for each client?



Thanks for help.
 
I

Ignacio Machin ( .NET/ C# MVP )

My question is can this code handle connections from multiple clients?

Or  should I have a separate listener for each client?

You need to have one thread listening for connection, and when a
connection is received a new thread is spawned to handle it.

I have posted similar code in the past, it's very easily done with a
Sync Queue.

Look in the archive or post back if you do not find my old posts
 
I

Ignacio Machin ( .NET/ C# MVP )

found the post:

while(true)
{
Socket s = listener1.AcceptSocket();
syncedQueue.Enqueue( s );
new Thread( new ThreadStart( workerMethod) ).Start();
}

workerMethod()
{
Socket s = syncedQueue.Dequeue();
}

You have to use a synced queue though:

syncedqueue = Queue.Synchonize( new Queue() );
 
M

Markgoldin

This is a bit above my head. How do I pull data from it?


message
news:6494cc59-2b1d-42d0-aa69-8ee353ab0de6@l42g2000hsc.googlegroups.com...
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top