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

 
 
 
Reply to this topicStart new topic
> LwIP 1.3.2 HTTP
k000858
сообщение Apr 2 2013, 14:44
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



имеется web сервер на lwip, страничка с методом POST, библиотека contrib httpserver_raw

С некоторых браузиров (например Safari) запрос запрос приходит в 2х пакетах (2 сегмента) и так уж получается, что сами параметры оказываются именно во втором пакете, который LwIP почему то напрочь игнорит.
в библиотеке есть дифайн LWIP_HTTPD_SUPPORT_REQUESTLIST, как я понимаю именно он включает поддержку HTTP запроса частями, к сожалению, его включение ничего не даёт. кто работал с библиотекой, подскажите как отпарсить параметры с помощью этой библы + если запрос в 2х частях
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 2 2013, 15:15
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Можно перейти на lwip-1.4.x, там HTTP сервер существенно доработан.
Go to the top of the page
 
+Quote Post
kan35
сообщение Apr 2 2013, 15:19
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



lwIP не имеет HTTP ни сервера ни клиента в своем составе, проблема в библиотеке которая поверх работает.
Go to the top of the page
 
+Quote Post
k000858
сообщение Apr 2 2013, 15:30
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



Цитата(scifi @ Apr 2 2013, 19:15) *
Можно перейти на lwip-1.4.x, там HTTP сервер существенно доработан.

боюсь, мне пока переход не осилить. проект на stm32f407

Цитата(kan35 @ Apr 2 2013, 19:19) *
lwIP не имеет HTTP ни сервера ни клиента в своем составе, проблема в библиотеке которая поверх работает.

к lwip идет набор библиотек contrib http://download.savannah.gnu.org/releases/lwip/drivers/ из которой и была взята библиотека HTTP сервера

Сообщение отредактировал k000858 - Apr 2 2013, 15:31
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 2 2013, 17:40
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(k000858 @ Apr 2 2013, 19:30) *
боюсь, мне пока переход не осилить. проект на stm32f407

Ну тогда можно попытаться сделать так, чтобы запрос приходил в 1 сегменте, изменяя настройки lwip.
Go to the top of the page
 
+Quote Post
k000858
сообщение Apr 2 2013, 17:46
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



Цитата(scifi @ Apr 2 2013, 21:40) *
Ну тогда можно попытаться сделать так, чтобы запрос приходил в 1 сегменте, изменяя настройки lwip.

сейчас такие настройки. запрос почему то разделился на два сегмента в 536 и 116 байт
пробовал PBUF_POOL_BUFSIZE делать 1024, результата не принесло
CODE
/* ---------- Memory options ---------- */
/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which
lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2
byte alignment -> define MEM_ALIGNMENT to 2. */
#define MEM_ALIGNMENT 4

/* MEM_SIZE: the size of the heap memory. If the application will send
a lot of data that needs to be copied, this should be set high. */
#define MEM_SIZE (10*1024)

/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
sends a lot of data out of ROM (or other static memory), this
should be set high. */
#define MEMP_NUM_PBUF 10
/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
per active UDP "connection". */
#define MEMP_NUM_UDP_PCB 6
/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
connections. */
#define MEMP_NUM_TCP_PCB 10
/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
connections. */
#define MEMP_NUM_TCP_PCB_LISTEN 6
/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
segments. */
#define MEMP_NUM_TCP_SEG 12
/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
timeouts. */
#define MEMP_NUM_SYS_TIMEOUT 3


/* ---------- Pbuf options ---------- */
/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */
#define PBUF_POOL_SIZE 12

/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
#define PBUF_POOL_BUFSIZE 512


/* ---------- TCP options ---------- */
#define LWIP_TCP 1
#define TCP_TTL 255

/* Controls if TCP should queue segments that arrive out of
order. Define to 0 if your device is low on memory. */
#define TCP_QUEUE_OOSEQ 0

/* TCP Maximum segment size. */
#define TCP_MSS (1500 - 40) /* TCP_MSS = (Ethernet MTU - IP header size - TCP header size) */

/* TCP sender buffer space (bytes). */
#define TCP_SND_BUF (4*TCP_MSS)

/* TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least
as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. */

#define TCP_SND_QUEUELEN (2* TCP_SND_BUF/TCP_MSS)

/* TCP receive window. */
#define TCP_WND (2*TCP_MSS)


Сообщение отредактировал IgorKossak - Apr 3 2013, 07:40
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
Gunner
сообщение Apr 3 2013, 13:34
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 99
Регистрация: 23-06-04
Из: Kiev
Пользователь №: 146



QUOTE (k000858 @ Apr 2 2013, 21:46) *
сейчас такие настройки. запрос почему то разделился на два сегмента в 536 и 116 байт
пробовал PBUF_POOL_BUFSIZE делать 1024, результата не принесло

Если увеличение PBUF_POOL_BUFSIZE не помогло, то, видимо, разделение действительно происходит при отправке. По-хорошему, надо научить HTTP-сервер обрабатывать данные, приходящие даже побайтно. Но, как вариант, для отправки можно использовать не POST, а GET-запрос, тогда параметры (если их немного) будут в первом сегменте.
Go to the top of the page
 
+Quote Post
k000858
сообщение Apr 3 2013, 14:07
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



GET в момем случае не подходит: параметров много, да и светить в адресной строке их не хотелось бы.
HTTP сервер почему то просто не видит второй пакет..
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 3 2013, 14:12
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(k000858 @ Apr 3 2013, 18:07) *
HTTP сервер почему то просто не видит второй пакет..

Понятно почему: на последующие сегменты просто не смотрит. Так проще, и обычно работает. Но теоретически каждый сегмент может иметь размер 1 байт, как упомянул Gunner. В следующих версиях lwip contrib этот косяк устранён.
Go to the top of the page
 
+Quote Post
k000858
сообщение Apr 4 2013, 02:46
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



Цитата(scifi @ Apr 3 2013, 18:12) *
Понятно почему: на последующие сегменты просто не смотрит. Так проще, и обычно работает. Но теоретически каждый сегмент может иметь размер 1 байт, как упомянул Gunner. В следующих версиях lwip contrib этот косяк устранён.

ну...судя по всему выбора у меня не остается. буду обновляться на 1.4.1
к сожалению, с lwip только начал знакомиться..по-этому вопросов будет много.

помимо библиотек самой lwip имеется папочка port, ну она тупо берется из новой версии (хотя может и от старой подойдет?!)
так же есть ethernetif.c(.h), в нем что то править надо будет?
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 4 2013, 09:55
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(k000858 @ Apr 4 2013, 06:46) *
так же есть ethernetif.c(.h), в нем что то править надо будет?

Если я правильно помню, мне при переходе 1.3 -> 1.4 ничего править не пришлось. Попробуйте, вдруг пройдёт безболезненно?
Go to the top of the page
 
+Quote Post
k000858
сообщение Apr 4 2013, 15:06
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



обновил стек до 1.4.1, так же обновил библиотеки HTTP сервера из contrib для 1.4.1
ситуация не изменилась, второй http пакет не видится.

кто работал с это библиотекой на базе LwIP ??? (библа во вложении)

так же есть проблема: устройство на LwIP подключено по ethernet к роутеру, по вай-фай к этому же роутеру подключен айфон, с сафари на айфоне не удается зайти на веб страницу устройства.
Прикрепленные файлы
Прикрепленный файл  httpserver_raw.zip ( 51.25 килобайт ) Кол-во скачиваний: 36
 
Go to the top of the page
 
+Quote Post
vlad_new
сообщение Apr 5 2013, 13:31
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 218
Регистрация: 24-06-10
Пользователь №: 58 127



В свое время я провозился с этим с месяц. Этот сервер везде воляется как демонструха. Сначала пытался подправить эту фигню. Тоже мучился с дефайнами прикручивал библиотеку последней версии и т. д. Вообщем что то как то получилось но всеравно криво. Потом плюнул на все это и взял за основу проэкт сервера из Кейла. Кое что подправил и сейчас имею прекрасный быстрый сервер без глюков.
Go to the top of the page
 
+Quote Post
Gunner
сообщение Apr 5 2013, 13:43
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 99
Регистрация: 23-06-04
Из: Kiev
Пользователь №: 146



QUOTE (vlad_new @ Apr 5 2013, 17:31) *
В свое время я провозился с этим с месяц. Этот сервер везде воляется как демонструха. Сначала пытался подправить эту фигню. Тоже мучился с дефайнами прикручивал библиотеку последней версии и т. д. Вообщем что то как то получилось но всеравно криво. Потом плюнул на все это и взял за основу проэкт сервера из Кейла. Кое что подправил и сейчас имею прекрасный быстрый сервер без глюков.

Из Кейла только проект сервера брали или сам стек TCP/IP там тоже свой?
Go to the top of the page
 
+Quote Post
vlad_new
сообщение Apr 5 2013, 14:05
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 218
Регистрация: 24-06-10
Пользователь №: 58 127



Подправил порты и eth драйвер под себя. Загрузил и все сразу заработало. Потом при тестировании нашел пару ошибок. Исправил и все полетело. Потом уже обнаружил, что в последней версии кейловцы уже сами нашли эти ошибки и исправили. В конференции на сервере кейла нашел как прикрутить все остальное. Мне еще udp нужен был. Чуть чуть еще их визард пришлось подправить (снял ограничения на колличество одновременных запросов). Ну как то так. Правда мне пока не удалось запустить этот проэкт на 168мгц. Работает только до 130. Ну похоже это уже модемный чип виноват. Щас буду менять его на другой. Сервер одинаково хорошо работает и в монопольном режиме и под Rtx, что очень порадовало.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:32
Рейтинг@Mail.ru


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