It must be receiving characters there. Why don't you take a look?
while(client.available()) {
// ...but not until this buffer is empty
Serial.write(client.read());
length++;
}
edit: You might also want to disable the SD SPI interface on your shield. That caused me some grief like that.
void setup()
{
Serial.begin(9600);
pinMode(4,OUTPUT);
digitalWrite(4,HIGH);
// rest of setup
}