Lectura de Datos Ethernet

En mi Codigo muestro que cuando arduino recive desde Android o alguna PC el siguiente Caracter “*”
Arduino me devuelve los valores de todo lo que estoy usando… y cuando algun valor cambia me vuelve a enviar todo. Pero cuando Arduino tienen que enviarme mucho no hago bien las lecturas quiero saber si mi codigo esta bien echo o hay algo para mejorar. Por ejemplo si estoy bajando la cortina y prendo o apago una luz en Android se me cae el socket TCP.

Codigo:

if (value13 == LOW && value12 == HIGH && estado_cortina > 0) { estado_cortina--; }
if (value12 == LOW && value13 == HIGH && estado_cortina < 21000) { estado_cortina++; }
   
EthernetClient client = server.available();  
      
  if (client) {
    if (client.available() > 0) {
      char c = client.read(); 
      //Mandar estados al iniciar app  
      if(c == '*'){
      sprintf(mess,"pin%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i",value,value4,value2,value7,value3,alarma,value6,value8,auto6,auto5,aviso,autocorti,value9,value11,value10);       
      server.print(mess);
      sprintf(cort,"cor%i   ",estado_cortina / 100);
      server.print(cort);
      }

Y cuando cambia el valor algo hago lo siguiente:

if(estadopin3 != value || estadopin4 != value4 || estadopin5 != value2 || estadopin7 != value7 || estadopin6 != value3 || alarma2 != alarma ||estadopin8 != value6 || estadopin9 != value8 || pin6auto != auto6 || pin5auto != auto5 || cortiauto != autocorti || estadopin10 != value9 || p1 != value11 || p2 != value10)
    {
      sprintf(mess,"pin%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i",value,value4,value2,value7,value3,alarma,value6,value8,auto6,auto5,aviso,autocorti,value9,value11,value10);     
      server.print(mess);
      estadopin3 = value;
      estadopin4 = value4;
      estadopin5 = value2;
      estadopin6 = value3;
	    alarma2 = alarma;
      estadopin7 = value7;
      estadopin8 = value6;
      estadopin9 = value8;
      pin6auto = auto6;
      pin5auto = auto5;
      cortiauto = autocorti;
      estadopin10 = value9;
      p1 = value11;
      p2 = value10;
    }
    if(estado_cortina != estado_cortina_a)
    {
      sprintf(cort,"cor%i   ",estado_cortina / 100);
      server.print(cort);
      estado_cortina_a = estado_cortina;
    }