Давайте.
Насчет мелких пакетов , которые по 54 байта на рисунке с сетевого сканера, когда с браузера приходит запрос GET/HTTP amc начинает отдавать ответ, первой следует строка
HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnnection: close\r\n\r\n
сейчас это делается с помощью cl.print, которая передает в канал сообщение побайтно, в результате возникает куча пакетов с полезной нагрузкой 1 байт, с учетом всех заголовков 54 байта, в результате в первом пакете передается первый H,второй T, третий T, четвертый P и т д, на картинке в углу фрагмент такого пакета , внизу надпись TCP SEGMENT DATA (1byte), сделаем так, заодно освобождаем оперативную память от находящейся там строки, дело в том что при данном способе строки хранятся в контроллере в двух экземплярах, сначала строка при прошивке вкомпиливается во флеш память (та которая 256 кб), затем, при запуске бодро копируются в оперативку и висят там до выключения питания, короче говоря место занимают, делаем так
PSTR("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnnection: close\r\n\r\n" )
строка перемещается в память программ(можете проверить), но обычным путем ее оттуда уже не добыть, поэтому описана функция
void write_p(const char *progmem_s,EthernetClient cl){
char c;
char Buf[512];
uint8_t Count=0;
while ((c = pgm_read_byte_near(progmem_s++))) {
Buf[Count]=c;
Count++;
}
cl.write(Buf,Count);
}
которая может скопировать за раз 512 байт из памяти программ в память данных и передать одним пакетом, в результате получаем пакет длинной 118 байтов где помещается весь ответ, не пугайтесь сильно такого большого значения 512(можно и поменьше), это конечно налагает некоторые ограничения, этот буфер существует только в функции void write_p,создается в момент входа в функцию в стеке и уничтожается при выходе, это необходимо иметь ввиду оставляя необходимое количество свободной памяти иначе не будет работать, учитывая что таких моментов там много , можно наскрести наверное около килобайта бесхозной памяти.в архиве файл которого коснулись данные правки,попозже будет остальное.