Arduino Ethernet shield + SD Card R3

I am using an Arduino Due with ethernet shield, interfaced as per requirements.
The Due Ethernet shield is instantiated as a client, connects to my PC server perfectly.
Twenty two (22) byte messages are transmitted to the server, with corresponding seven byte acknowledgement message from server to client.
The ethernet client connection is tested before every transmission cycle. In the event that there should be a fault, the SD card is instantiated (sd1.begin(4) and the twenty two (22) bytes message written to a binary file. This functions without a hitch.
In the event of a connection anomaly, the client connection is automatically closed. (client.stop() )

An attempt is made every 5 minutes or so to reinstantiate the client connection to the PC server.
It would appear that if the SD card has been instantiated, it is impossible to reinstantiate a client connection.
If the SD card has however not been instantiated, the ethernet reconnection takes pace without a hitch.

ie
if(!client.connected) )
{
client.stop();
...... write data to SD Card--------------------------
After 200 messages have been written to SD Card (4400 bytes) try and re-establish ethernet connection to server....

ethernet.begin(mac,ip);
delay(1000);
if(! client.connect() )
try again later...........
}

It is impossible to reconnect to the server when the SD card has been instantiated.

Please does anybody have a work around or advice on solving this problem.

Server test code that provides for the ethernet shield and the SD card to work together.

//zoomkat 12/26/12
//SD server test code
//open serial monitor to see what the arduino receives
//address will look like http://192.168.1.102:84 when submited
//for use with W5100 based ethernet shields

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

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 102 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(84); //server port
String readString; 

//////////////////////

void setup(){

  Serial.begin(9600);

  // disable w5100 while setting up SD
  pinMode(10,OUTPUT);
  digitalWrite(10,HIGH);
  Serial.print("Starting SD..");
  if(!SD.begin(4)) Serial.println("failed");
  else Serial.println("ok");

  Ethernet.begin(mac, ip, gateway, gateway, subnet);

  //delay(2000);
  server.begin();
  Serial.println("Ready");

}

void loop(){
  // Create a client connection
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();

        //read char by char HTTP request
        if (readString.length() < 100) {
          //store characters to string 
          readString += c; 
          //Serial.print(c);
        } 
        //if HTTP request has ended
        if (c == '\n') {

          ///////////////
          Serial.println(readString); //print to serial monitor for debuging 

          client.println("HTTP/1.1 200 OK"); //send new page
          client.println("Content-Type: text/html");
          //client.println("Content-Type: image/jpeg");
          //client.println("Content-Type: image/gif");
          //client.println("Content-Type: application/x-javascript");
          //client.println("Content-Type: text");
          
          client.println();

          //File myFile = SD.open("boom.htm");
          File myFile = SD.open("HYPNO.JPG");
          //File myFile = SD.open("BLUEH_SL.GIF");
          //File myFile = SD.open("SERVOSLD.HTM");
          if (myFile) {
            //Serial.println("test.txt:");
            // read from the file until there's nothing else in it:
            while (myFile.available()) {
              client.write(myFile.read());
            }
            // close the file:
            myFile.close();

          }
            delay(1);
            //stopping client
            client.stop();
            readString="";
          //}
        }
      }
    }
  } 
}