Ethernet shield прием пакета с клиента

iukash
Offline
Зарегистрирован: 10.05.2012

 В общем я не могу раскурить получение пакета!

EthernetClient client = server.available();
if(client)
{
Serial.println("New client");
}
client.read(); //и тут затык

Я отправляю пакет состоящий из первые 4 байта int, который обозаначает длину строки, и далее string строка. Как мне принять этот пакет байтов и присвоить int dlina - первые 4 байта, string str - остальные, в зависимости от dlina? Или какое решение сюда подойдет? Клиент может слать только байтовый пакет, решение типо отправить готовый int и string не подойдет. Спасибо!

iukash
Offline
Зарегистрирован: 10.05.2012

 Разобрался с вопрсом! Если кому интересно пишите, тогда в теме выложу решение!

Zapek@n
Offline
Зарегистрирован: 16.02.2012

 Выкладывайте конечно. Всегда интересно посмотреть решение. Спасибо.

iukash
Offline
Зарегистрирован: 10.05.2012
//С клиента шлем пакет состоящий из int и string длиной int
char str[128];
char myint[128];
client.readBytes(myint,4); //читаем 4 байта которые наш int
int i = *(int *) myint; //присваиваем таким хитрым способом инту
Serial.print(i);
client.readBytes(str,i);//считываем i байтов наш string
for(int i2 = i; i2 < 128; i2++)
{
str[i2] = NULL; //остальные набиваем null иначе получим кашу
}
Serial.print(str); //вот наш стринг