I'm writing a server and need to be able to send a message to all connected clients.
I'm trying to decide if I should create SocketAsyncEventArgs for each connected socket and send all the packets at once.
Another approach would be to use a single SocketAsyncEventArgs and send the packets one after another. Then it would be tempting to call SendAsync in the ProcessSend method (which is called when SendAsync has completed) and have a queue of connected sockets. But what if for some reason SendAsync will not complete in a reasonable amount of time? Is there any scenario that would make it never to complete?