I've got a C# program with lots (let's say around a thousand) opened TcpClient objects. I want to enter a state which will wait for something to happen for any of those connections.
I would rather not launch a thread for each connection.
Something like...
while (keepRunning) { // Wait for any one connection to receive something. TcpClient active = WaitAnyTcpClient(collectionOfOpenTcpClients); // One selected connection has incomming traffic. Deal with it. // (If other connections have traffic during this function, the OS // will have to buffer the data until the loop goes round again.) DealWithConnection(active); } Additional info:
The TcpClient objects come from a TcpListener.
The target environment will be MS .NET or Mono-on-Linux.
The protocol calls for long periods of idleness while the connection is open.
selectsyscall to do this. I'm sure there's some analog in Windows.