Arduino gives up / Flooding ethershield?

Have you tried something simpler as a debug?

  Serial.println("connected");

  while(client.connected()) 
  {
    while(client.available()) 
    {
      char c = client.read();
      Serial.print(c);
    }
  }
  client.stop();
  Serial.println();
  Serial.println("disconnected"););

Are you seeing the characters you expect the code to parse between connected and disconnected?