Official Arduino WiFi Shield - Issues - Improvements - Call to action

  1. Only one connection at a time: It looks like you should be able to handle up to 4 sockets, but the server never seems to return the additional connections in a server.available() call. Perhaps I misunderstand how to code this, but again, use the chatServer example and you'll see that only one connection at a time works. The additional connections over the initial one will send and receive tcp/ip packets, but the client connection never gets passed to the "application layer".

Last time I looked at the server.available() code it returned the first client that had data available. If one of the clients always has data available this will starve the others for attention.

This design also causes a problem for applications where the client expects to get an immediate reply from the server, even without sending a 'request'. Since the client doesn't have data to process it will never be returned by server.available().