реклама на сайте
подробности

 
 
> lwip: как принимать данные?
H90
сообщение Dec 27 2010, 07:09
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 27-12-10
Пользователь №: 61 902



Приветствую.
Есть lwip для lm3s9b92 из примера StellarisWare. В примере использован метод GET, требуется реализовать метод POST для передачи файлов. Размер файла значительно превышает размер окна. Как я понимаю, необходимо сделать примерно следующее (метод POST вписал в пример туда же, где обработка GET):
http_recv -> tcp_recved -> декодировать POST -> tcp->write(200 OK)-> [принимать данные.]
[Принимать данные]:
while(не кончился контент)
{http_recv -> tcp_recved -> tcp_write(WHAT?)}
Функция tcp_write(WHAT?) или какая-либо другая должна сообщить уровню ТСР, что можно послать АСК и принять следующую порцию данных.

ЧТО именно нужно посылать функцией tcp_write, чтобы подтвердить принятые данные и начать получать следующие? Пробовал посылать данные нулевой длины - возникает постоянный duplicate ack при анализе wireshark'ом. Если посылать 200 ОК, то рвётся соединение. Если вообще ничего не посылать - ничего не происходит, соединение рвётся по таймауту (т.е.одной tcp_recved) недостаточно. Может, надо использовать не tcp_write, а другую функцию - тогда какую?

Примеров с POST или с приёмом более одного окна я не нашёл. С lwip и сетевыми протоколами ранее не работал.

Прошу подсказать, как надо правильно это делать.

Сообщение отредактировал H90 - Dec 27 2010, 07:12
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 2nd August 2025 - 00:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016