Насчет LWIP и выравнивания, LPC2368!Сам просидел два дня, пока нашел
в многих include LWIPа описано
#ifdef PACK_STRUCT_USE_INCLUDES
# include "arch/bpstruct.h"
#endif
описание структуры (заголовка)
#ifdef PACK_STRUCT_USE_INCLUDES
# include "arch/epstruct.h"
#endif
достаточно в lwipopt.h указать параметр #define PACK_STRUCT_USE_INCLUDES 1
и сделать bpstruct.h со строкой #pragma pack(1) - это для иара, для Кейла packed
epstruct.h - #pragma pack()
поместить в каталог arch - и проблемы с выравниванием ушли.
Сейчас сижу - не могу прикрутить LWIP к INDY в DELPHI
пример Вasic TCP Client в инди синхронизируется c моим устройством (посылает SYN, получает SYN+ASK, посылает ASK - и я молчу, не знаю что ответить)
Записал протоколы обмена между двумя компами с примерами TCP CLIENT и TCP SERVER в файлы ниже
там после ASK идет пакет с текстом приветствия и данными
Вот мой код в LPC - открываю соединение
static void leb_init(void)
{
struct tcp_pcb* tcpleb;
struct tcp_pcb* tcpleb_listen;
tcpleb = tcp_new();
if (tcpleb == NULL)
return;
/* Bind to port 3333 for any address */
if (tcp_bind(tcpleb, IP_ADDR_ANY, 3333) != ERR_OK)
return;
tcpleb_listen = tcp_listen(tcpleb);
if (tcpleb_listen == NULL)
{
tcp_abort(tcpleb);
tcpleb = NULL;
return;
}
tcpleb = tcpleb_listen;
tcp_accept(tcpleb, lebiga_accept_callback);
}
lebiga_accept_callback - подпрограмма обработки - там нужна помощь!
объясните последовательность действий, что и как нужно применять
tcp_connect(), tcp_arg, tcp_recv(), tcp_sent(), tcp_poll()
делал подобно http - не работает