Не удается получить несколько ответов на HTTP-запросы с помощью TCP-соединения lwIP Raw

Я не могу получить ответ на несколько запросов HTTP, когда я пытаюсь поставить в очередь данные для отправки на сервер.

Мы можем установить соединение с сервером и немедленно выполнить HTTP-запрос внутри функции connected_callback() (вызываемой, как только соединение с сервером установлено), используя функцию tcp_write(). Однако, если я попытаюсь сгенерировать два HTTP-запроса или более, используя следующий синтаксис:

err_t connected_callback(void *arg, struct tcp_pcb *tpcb, err_t err) {
xil_printf("Connected to JUPITER server\n\r");

LWIP_UNUSED_ARG(arg);

/* set callback values & functions */
tcp_sent(tpcb, sent_callback);
tcp_recv(tpcb, recv_callback);
if (err == ERR_OK) {
    char* request = "GET /circuits.json HTTP/1.1\r\n"
        "Host: jupiter.info.polymtl.ca\r\n\r\n";
    (void) tcp_write(tpcb, request, 100, 1);

    request = "GET /livrable1/simulation.dee HTTP/1.1\r\n"
        "Host: jupiter.info.polymtl.ca\r\n\r\n";
    (void) tcp_write(tpcb, request, 100, 1);


    tcp_output(tpcb);

    xil_printf("tcp_write \n");


} else {
    xil_printf("Unable to connect to server");
}

return err;}

Мне удается отправить все данные на сервер, но я никогда не получаю никаких данных для второго HTTP-запроса. Мне удается распечатать полезную нагрузку для первого запроса (файл JSON), но мне так и не удается получить что-либо для файла.dee. Существуют ли конкретные инструкции для постановки HTTP-запросов вместе с lwIP или я что-то упустил?

Если вам требуется больше кода для точного анализа моей проблемы, не стесняйтесь говорить об этом.

Спасибо!

1 ответ

Проблема, которую я вижу в том, что у вас есть двойной \r\n сочетание в конце вашего запроса заголовка заявления.

Тебе нужно \r\n\r\n только в конце вашего заголовка. Теперь у вас есть двойной раз. Удалить из первой записи.

Другие вопросы по тегам