I dont understand Ethernet client.availabe()

Hi

I just started to work with an Ethernetshield and i dont really get why my code is not working.

The description of the function says:
Returns the number of bytes available for reading (that is, the amount of data that has been written to the client by the server it is connected to).

I just made a few changes to the WebClient example from the ethernet library.

/*
  Web client
 
 This sketch connects to a website (http://www.google.com)
 using an Arduino Wiznet Ethernet shield. 
 
 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13
 
 created 18 Dec 2009
 modified 9 Apr 2012
 by David A. Mellis
 
 */

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = { 
  0x90, 0xA2, 0xDA, 0x0D, 0x1A, 0x1D };
IPAddress server(192,168,195,104); // Google

// Initialize the Ethernet client library
// with the IP address and port of the server 
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  Serial.println("go");
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    for(;;)
      ;
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /micha/arduino.php/?id=1");
    client.println();
  } 
  else {
    // kf you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
  if (client.connected())
  Serial.println(client.available());
  else
  Serial.print("FUUU");
  // if there are incoming bytes available 
  // from the server, read them and print them:
  while (client.connected()){
    if (client.available()) {
      char c = client.read();
      if (c != 13 && c != 10)
        Serial.print(c);
    }
  }



  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    //client.stop();

    // do nothing forevermore:
    for(;;)
      ;
  }
}

the Serial.println(client.available()); line always prints out "0" ... As i understood from the description i would have to get a number of available bytes printed?
I need this, because i want to create a for loop to put all read data into an array. How can I do that? =/

I just made a few changes to the WebClient example from the ethernet library.

Did the example work before you modified it?

Snippets-are-us is down the road a ways. Here, we expect to see ALL of your code.

Sry! I edited and postet the whole code now.

Yes, the Example worked before. Here is what I see on my serial monitor:

go
connecting...
connected
0
1 2012-09-19 2012-09-19 0 0
disconnecting.

"1 2012-09-19 2012-09-19 0 0" is what i expect to get, so everythings working. But for the Serial.println(client.available()); i would expect to get a 28 (as this are 28 chars) or some more if 10 and 13 were excluded.. But I get a 0.

But I get a 0.

Because it takes time for the data to arrive. You are checking the amount of data that was received as soon as the connection is established. Of course that will be 0. Patience is a virtue. The delay() function is not. Don't go there.

If you know that you are to get 28 bytes, statically allocate an array that size, and populate it in the nested if blocks that are executed when there IS data to read.