|
|
  |
LwIP 1.3.2 HTTP |
|
|
|
Apr 2 2013, 15:30
|

Местный
  
Группа: Участник
Сообщений: 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
|
|
|
|
|
Apr 2 2013, 17:46
|

Местный
  
Группа: Участник
Сообщений: 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] - для короткого!!!
|
|
|
|
|
Apr 3 2013, 13:34
|
Частый гость
 
Группа: Участник
Сообщений: 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-запрос, тогда параметры (если их немного) будут в первом сегменте.
|
|
|
|
|
Apr 4 2013, 02:46
|

Местный
  
Группа: Участник
Сообщений: 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), в нем что то править надо будет?
|
|
|
|
|
Apr 4 2013, 15:06
|

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

|
обновил стек до 1.4.1, так же обновил библиотеки HTTP сервера из contrib для 1.4.1 ситуация не изменилась, второй http пакет не видится. кто работал с это библиотекой на базе LwIP ??? (библа во вложении) так же есть проблема: устройство на LwIP подключено по ethernet к роутеру, по вай-фай к этому же роутеру подключен айфон, с сафари на айфоне не удается зайти на веб страницу устройства.
|
|
|
|
|
Apr 5 2013, 13:43
|
Частый гость
 
Группа: Участник
Сообщений: 99
Регистрация: 23-06-04
Из: Kiev
Пользователь №: 146

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