и если это буфер заполнить не полностью, то LWIP или клиент( в лице Crome) начинает тупить.
Для проверки можете проделать на своем компе и последней свалке следующую последовательность.
1) Загрузить максимально возможный статический файл который выдается с Content-Length(я проверял на gif файле...
Для тех кто будет реализовывать свой HTTP сервер, и столкнется с маленькой скорость загрузки в Chrome.
Решение ниже, описание в комментариях:
void onSend(...) {
maxbufsize=tcp_sndbuf(pcb);
...
buflen=os_sprintf(buf,".....",......);
buflen+=os_sprintf(buf,".....",......);
...
проблема при формирование ответа Chunked в функции webserver_send_fdata
в начале функции мы получаем
web_conn->msgbufsize=tcp_sndbuf(ts_conn->pcb)
но в конце функции мы пошлем на 2 -3 байта меньше ранее полученного, за счет ранее зарезервированного места под размер chunka.
Посмотрите в начале...
pvvx, посмотрите результат строчки
"web_conn->msgbufsize = tcp_sndbuf(ts_conn->pcb);"
скорее всего при запросе через хром будет
2920 -первая передача
потом будет падать до 1500-1700 и так до конца передачи, в результате падение скорости передачи.
Выход из этой ситуации полностью заполнять буфер...
Сам неделю назад нашел, когда пытался перенести свой проект с обычного SDK на FreeRtos SDK. Мне больше нравится терминология задач FreeRtos, чем запуск процедур через таймер, который не гарантирует реал тайм.
в коде
char *recv_buf = (char *)zalloc(129);
while ((recbytes = read(sta_socket , recv_buf, 128)) > 0) {
recv_buf[recbytes] = 0;
printf("C > read data success %d!\nC > %s\n", recbytes, recv_buf);
}
в позицию 129 ставиться символ \0 для работы с...
Я планирую реализовать следующий механизм:
1) web-сервер условно разделить на две части
(1)- станицы для настроек [см. ниже]
(2)- остальные страницы, [многопользовательский режим доступ, он у Вас уже реализован
]
Для страниц настроек следующий алгоритм:
- показать страницу "запрос...
Описанный механизм понял, но хотелось бы уточнить предполагаемые условия работы:
1) режим работы с настройками многопользовательский?(более одного пользователя одновременно могут менять настройки).
2) передача настроек должна быть в одном пакете TCP ?
сделать вход в настройки через логин и пароль. Кто первый прошел авторизацию тот и настраивает. При попытки авторизации с с другого ip показать страницу "Производится настройка устройства". Так делают мой роутер D-link.
Аналогично, загубил первый, когда прошил с адреса 0х40000. Теперь не одна прошивка на нем не работает и сильно перегревается чип , но надеюсь восстановить через снятый дамп flash памяти.