What client do you use to check this?
As it loops, the server.available(1) is true only while data is available then is closes the connection?
No, this isn't true. BTW. the call is
EthernetClient client = server.available();
I don't know where you got your (1) from. This call returns the first open connection.