Dados recebidos por wifi como int e não string

Ola pessoal. Preciso receber um pacote via wifi STA, mas preciso tratar como int, pois preciso tratar o pacote byte a byte. Como string não funciona, pois posso receber qualquer dado, como por exemplo o caracter CR (0x0d) e isso bagunça quando é string. Fiz um sketch de teste, se ele funcionar para mim está resolvido. Preciso receber o pacote e gerar seu eco. A grande questão nesse sketch está na linha dado = client.read(); que não funciona.

#include <lwip/priv/tcp_priv.h>

void tcpCleanup()
{
  while (tcp_tw_pcbs != NULL)
  {
    tcp_abort(tcp_tw_pcbs);
  }
}

#include <ESP8266WiFi.h>

const char* ssid = "2.4Gviviane";
const char* password = "24151965";
int dado[20]={0};
WiFiServer server(80);

void setup() {
  Serial.begin(74880);
  IPAddress staticIP(192, 168, 0, 191);
  IPAddress gateway(192, 168, 0, 1);
  IPAddress subnet(255, 255, 255, 0);

  WiFi.config(staticIP, gateway, subnet);
  WiFi.begin(ssid, password);
 
   while (WiFi.status() != WL_CONNECTED) {
    delay(500);   
  } 
  server.begin();   
  Serial.println("Conected");
  Serial.println(WiFi.localIP());

    tcpCleanup();    

}

void loop() {
  
  // put your main code here, to run repeatedly:

  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  
  while (!client.available()) {
    delay(1);  
  }

 // String dado = client.readStringUntil('\r');  
  dado = client.read();  
  //req.toCharArray(dado,17);
  client.flush();
//  Serial.println(req);

  Serial.print(dado);
 
    for (char i=0; i<17;i++)
    {
      client.write(dado[i]);
    }
  
 
}

Olá @mario06763
teste assim:

int myVariavel;
myVariavel= client.parseInt();  

RV mineirin

Olá @ruilviana
Eu vi que parseInt() traz o primeiro caracter válido (long) da serial, correto? Mas eu preciso receber todo o pacote que venha.
Fiz os seguintes testes, sempre enviando pelo client o seguinte pacote em Hexa:
00 01 02 03 0D F0 F1 F2
Aqui no pacote, 0DH é um byte a ser manipulado, e não o caractere CR na tabela ASCII. Client tem que receber de volta exatamente o mesmo pacote.

1o. teste

String req = client.readStringUntil('\r');  
client.println(req);

client recebeu:
01 02 03 0D 0A , ou seja, quando recebeu 0D entendeu como CR, finalizou a string, e ao enviar terminou com CR LF.

2o. teste:

char dado[10]={0};
String req = client.readStringUntil('\r');  
req.toCharArray(dado,7);
    for (char i=0; i<7;i++)
    {
      client.write(dado[i]);
    }
´´´
client recebeu  01  02  03  00  00  00  00
ou seja, aqui depois do byte 0D a string foi zerada.

Prezado @ruilviana
Fiz mais um teste com client.read() , pois esse le byte a byte. Fiz assim:

char dado[20] = {0};
for (char i=0;i<7; i++)dado[i] = client.read();
client.write(dado);

client recebeu 01 02 04 0D , ou seja, parou novamente no 0D. Não sei se o problema é em client.read() ou em client.write() , ou ambos.

Prezado @ruilviana
Consegui resolver. No último exemplo resolvi com client.write(dado, 7). Aí funcionou do jeito que eu preciso. Muito obrigado por sua atenção, forte abraço.