This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/TM4C1294NCPDT:HttpGet NDK 项目从服务器转移接收数据

Guru**** 2350310 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/610086/rtos-tm4c1294ncpdt-httpget-ndk-project-shifted-receive-data-frome-server

器件型号:TM4C1294NCPDT

工具/软件:TI-RTOS

您好!

我正在 TI 提供的 HttpGet 项目上处理 Tiva C Launchpad。


我尝试从我的服务器获取 Timestamp,但在程序"HttpGE.c"的这一部分,第124行:

执行{
RET = HTTPCli_readResponseBody (&CLI、data、sizeof (data)、&moreFlag);
如果(ret < 0){
printError ("httpTask: Response body processing failed"、ret);
}

len += ret;
} while (moreFlag);

程序执行循环两次。 第一次、缓冲区数据=[49 '1'、52 '4'、57 '9'、57 '9'、57 '9'...] 物有所值。 但他第二次执行循环、因此他成为 DATA=[97 'A'、0 '\x00'、57 '9'、57 '9'、57 '9'...] … 牵引第一字节已更改。

问题:

1-我不会禁止第二次执行循环、因为我发送的数据大小很小。

2-什么是这些值(97 'A'、0 '\x00). 它始终是相同的

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Toufik Chelmounti]1-我不会对循环的第二次执行进行验证,因为我发送的数据大小很小。

    您的数据缓冲区看起来很小、以适应来自响应的整个数据。 因此、将 moreFlag 设置为让您知道有更多数据可从响应中读取。 即使您不需要数据、也必须对其进行读取、以便清空 TCP 缓冲区。 我建议在下一个循环之前使您的缓冲区更大或将您需要的数据从缓冲区传输到其他变量/缓冲区。

    [引用 user="Toufik Chelmounti]2-这些值的含义是什么(97 'A'、0 '\x00)... 始终保持不变[/报价]

    我不确定数据的含义、但它是您的服务器正在发送的内容。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Vikram、

    我使用256字节的缓冲区来读取服务器响应,该响应是 PHP 代码提供的时间戳:

    
    

    BR、

    图菲克

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Toufik、

    如果您认为缓冲区中有足够的空间并且 readResponseBody 循环两次以读取所有字节、那么我们应该偏移数据数组指针。 这将确保第一个循环中读取的数据不会被覆盖。  

    在代码中替换:

    HTTPCli_readResponseBody(&cli, data, sizeof(data), &moreFlag);

    其中:

    HTTPCli_readResponseBody(&cli, data + len, sizeof(data) - len, &moreFlag);

    请告诉我这是否可行。

    Vikram