0

データをエンキューしてサーバーに送信しようとすると、複数の HTTP 要求に対する応答を受信できません。

サーバーへの接続を確立し、tcp_write() 関数を使用して、connected_callback() 関数 (サーバーへの接続が確立されるとすぐに呼び出される) 内で HTTP 要求をすぐに発行できます。ただし、次の構文を使用して 2 つ以上の 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;}

すべてのデータをサーバーに送信することに成功しましたが、2 番目の HTTP 要求のデータをまったく受信しません。最初のリクエスト (JSON ファイル) のペイロードを出力することはできましたが、.dee ファイルについては何も受信できませんでした。lwIP と一緒に HTTP リクエストをキューに入れるための特定の指示はありますか、それとも何か不足していますか?

私の問題を正確に分析するためにさらにコードが必要な場合は、遠慮なく言ってください。

ありがとう!

4

1 に答える 1