WiFi Shield - client.read() - Skip line if no input?

Hi, Guys
I have a simple issue where if my code does not receive any input from client.read() every second the session will disconnect because of a TCP timeout protocol. I want to fix this issue by recycling the last input from client.read() if no new input is present. Does anyone know how I could possibly accomplish this?

PS. I have done alot of research into threads for arduino however, am unsure how to implement.

/*
  2012/2013 Capstone Project
  Wireless Smart Lighting
  Arduino Submodule

  Circuit:
  * WiFi shield attached
  
*/

#include <SPI.h>
#include <WiFi.h>

#define MAX_CMD_LENGTH 25
const int ledPin =  6;      // the number of the LED pin
String cmd;
WiFiClient client;
boolean connected = false;
int values[] = {0,10,20,30,40,50,60,70,80,90,100};

char ssid[] = "S3"; //  your network SSID (name) 
char pass[] = "zxcvzxcv";    // your network password (use for WPA, or use as key for WEP)

//int keyIndex = 0;            // your network key Index number (needed only for WEP)

int status = WL_IDLE_STATUS;

WiFiServer server(23);

boolean alreadyConnected = false; // whether or not the client was connected previously

void setup() {    
  // initialize the pushbutton pin as an input:
  pinMode(ledPin, OUTPUT); 
  //Initialize serial and wait for port to open:
  Serial.begin(9600); 
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present"); 
    // don't continue:
    while(true);
     
  } 
  // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) { 
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:    
    status = WiFi.begin(ssid,pass);

    // wait 10 seconds for connection:
    delay(1000);
  } 
  // start the server:
  server.begin();
  // you're connected now, so print out the status:
  printWifiStatus();
 }

void loop() {
  // wait for a new client:
  WiFiClient client = server.available();

  // when the client sends the first byte, say hello:
  if (client) {
    if (!alreadyConnected) {
      // clead out the input buffer:
      client.flush();    
      Serial.println("We have a new client");
      client.println("Hello, client!"); 
      alreadyConnected = true;
    } 
    while (client.available() > 0) {
      
      readTelnetcommand(client.read()); 
    }
  }
}

void readTelnetcommand(char c){
  if(cmd.length() == MAX_CMD_LENGTH) {
      cmd = "";
  } 
  cmd+=c;
  
  if(c == '\n') {
    if(cmd.length() > 2) {
      // remove \r and \n from the string
      cmd = cmd.substring(0,cmd.length() - 2);
      parseCommand();
    }
  }
}

void parseCommand() {
  int value = cmd.toInt();
  int n;

  if(cmd.equals("quit")) {
        client.stop();
        connected = false;
   } else if(cmd.equals("help")) {
        server.println("--- Telnet Server Help ---");
        server.println("on    : switch on the Main Power");
        server.println("off   : switch off the Main Power");
        server.println("quit  : close the connection");
   } else if(cmd.equals("on")) {
        analogWrite(ledPin, 255);
        server.print("\t");    
        server.println("LED on.");
   } else if(cmd.equals("off")) {
        analogWrite(ledPin, 0);
        server.print("\t");    
        server.println("LED off.");
   } else if(cmd.equals("fade")){
        for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) { 
        // sets the value (range from 0 to 255):
        analogWrite(ledPin, fadeValue);         
        // wait for 30 milliseconds to see the dimming effect    
        delay(30);                            
   } 
   } else {
       for (n=0;n<11;n++){
       if(value==values[n]){
       int fadeamount =value*2.5;
       analogWrite(ledPin,fadeamount);
       server.print("\t");      
       server.write("Diming Level(0-100): ");
       server.print(values[n]);
       server.println();
       }
  }
  }
  cmd = ""; 
}

void printWifiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}

if my code does not receive any input from client.read() every second the session will disconnect because of a TCP timeout protocol

A TCP timeout does not occur after a second.

I want to fix this issue by recycling the last input from client.read() if no new input is present.

What do you mean by "recycle"? Handling it as it the last character was received twice?

I have done alot of research into threads for arduino however, am unsure how to implement.

Arduino doesn't have an operating system and so doesn't have support for threading and the like. It also doesn't support the concept of processes, device drivers or anything else an operating system usually supplies. On this platform you have direct, immediate control over the whole processor as well as the whole hardware.

I want to fix this issue by recycling the last input from client.read() if no new input is present.

My goal is to reuse the previous input if no new input is present on client.read() the issue right now is the code requires new data on client.read() or it will not continue.

My goal is to reuse the previous input if no new input is present on client.read() the issue right now is the code requires new data on client.read() or it will not continue.

Can you make an example, how this should work? I still don't understand, what exactly you wanna realize.