Datalogging telnet session to sdcard

heres the whoel code. sorry im sure its choppy. everything except the process of reading and saving the telnet information works,

#include <SPI.h>
#include <Ethernet.h>
#include <SdFat.h>
#include "Wire.h"
#include "DHT.h"
#define SENS1 2
#define DHTTYPE DHT22 // import the Pressure Sensor Library We are using Version one of Adafruit API for this sensor
#define error(s) sd.errorHalt(PSTR(s))
DHT sens1(SENS1, DHTTYPE); // create sensor object called mySensor
SdFat sd;

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; //the actual value matches my Arduino Ethernet
IPAddress ip(10, 0, 0, 55); //ipaddr of arduino
IPAddress server1(10, 0, 0, 89);
IPAddress server2(10, 0, 0, 50); //telnet server of esp8266 esplink
EthernetClient client2;
EthernetClient client;

int localport = 19126;
int localport2 = 19127;
int NoSensor = 0;
int NoSensorAlert = 0;
const uint8_t chipSelect = 4; //chipSelect pin for the SD card Reader
File mySensorData; //Data object you will write your sesnor data to
File mySensorData2;
ArduinoOutStream cout(Serial);


void ftransfer() {
  char rbuffer[2]; //Chunk can be increased to bigger sizes, be careful about memory!!
  char c;
  int n; // open test file
  SdFile rdfile("PTData.txt", O_READ); // <--- Name of file to be transfered
  uint32_t fsize; //Obtain file size
  fsize = rdfile.fileSize() - rdfile.curPosition();
  Serial.println(fsize);
  if (!rdfile.isOpen()) error("File could not be opened, check configuration...");  // check for open error
  Ethernet.begin(mac, ip);
  Serial.println("Connecting to server for sensor data transfer...");
  Serial.println(Ethernet.localIP());
  if (client.connect(server1, localport)) {
  Serial.println("Connected");   // if you get a connection, report back via serial:
    while ((n = rdfile.fgets(rbuffer, sizeof(rbuffer))) > 0) {
      client.write(rbuffer, sizeof(rbuffer) - 1);
     }
    client.stop();
  }
  else {
    Serial.println("No upload server available");     // No response from server1
  }
}

void ftransfer2() {
  char rbuffer2[2]; //Chunk can be increased to bigger sizes, be careful about memory!!
  char d;
  int o; // open test file
  SdFile rdfile2("PTData2.txt", O_READ);
  uint32_t fsize2; //Obtain file size
  fsize2 = rdfile2.fileSize() - rdfile2.curPosition();
  Serial.println(fsize2);
  if (!rdfile2.isOpen()) error("File could not be opened, check configuration...");  // check for open error
  Ethernet.begin(mac, ip);
  Serial.println("Connecting to server for sensor data transfer2...");
  Serial.println(Ethernet.localIP());
  if (client.connect(server1, localport2)) {
  Serial.println("Connected");   // if you get a connection, report back via serial:
    while ((o = rdfile2.fgets(rbuffer2, sizeof(rbuffer2))) > 0) {
      client.write(rbuffer2, sizeof(rbuffer2) - 1);
     }
    client.stop();
  }
  else {
    Serial.println("No upload server available");     // No response from server1
  }
}


void setup() {
  Ethernet.begin(mac, ip);
  Serial.begin(9600);
  sens1.begin();
  pinMode(10, OUTPUT);
  digitalWrite(10, HIGH);
  sd.begin(4); //Initialize the SD card reader
  delay(400);  // catch Due reset problem
  Serial.println("connecting to server2...");
  if (client2.connect(server2, 23)) {
    Serial.println("connected to server2");
  }
}
void loop(void) {
float tempF = sens1.readTemperature(true);
  float Hum = sens1.readHumidity(true);
  
  EthernetClient client2;
  if (client2.connect(server2, 23)) {
    if (client2.available() == 0) delay(2000);
    mySensorData2 = sd.open("PTData.txt", FILE_WRITE);
    while (client2.available() > 0)
    {   
      char c = client2.read();
      delay(3000);
       mySensorData2.print(c);
      mySensorData2.close();
      ftransfer2();
    }
  
    }
  
  

  if (isnan(tempF) || isnan(Hum)) {  //sens1 connection check
    NoSensor = 1;
  } else {
    NoSensor = 0;
  }

  if (NoSensor == 1 && millis() - NoSensorAlert >= 10000) {
    NoSensorAlert = millis();
    Serial.println("Check The DHT Sensor '1' pin 2");
  }

  mySensorData = sd.open("PTData.txt", FILE_WRITE);
  if (mySensorData) {
    Serial.print("The Humidity is: "); //Print Your results
    Serial.print(Hum);
    Serial.println("%");
    Serial.println("");
    Serial.print(tempF);  //TEMP
    Serial.println("Degrees F");
    Serial.println("");
    delay(200); //Pause between readings.

    mySensorData.print(" Temp");
    mySensorData.println("");
    mySensorData.print( Hum );                         //Humidity
    mySensorData.print("%");
    mySensorData.println("");
    mySensorData.print( tempF );                         //Humidity
    mySensorData.print("F");
    mySensorData.close();
    ftransfer();
    sd.remove("PTData.txt");
    Serial.println("okay");//close the file
}
  }