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/EK-TM4C1294XL:网络输出到控制台:"TcpTimeoutRexmt:重新发送超时"

Guru**** 2473270 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/684145/rtos-ek-tm4c1294xl-networking-output-to-console-tcptimeoutrexmt-retransmit-timeout

器件型号:EK-TM4C1294XL

工具/软件:TI-RTOS

环境:Windows 64、CCS 7.4、XDCtools 3.32.0.06、TI-RTOS 2.16.0.08
我已经为该板使用了 HttpGet 示例、并对其进行了修改以向服务器发布帖子。 每次运行时、我都会得到(在控制台上)"00065.500 TcpTimeoutRexmt:Retransmit Timeout (重新发送超时)"、但每次迭代的前导码都不同。 这并不是阻止帖子工作的原因、但由于有意外的输出、这让我感到担忧。 我找到了几篇相关论坛文章、建议它可能与堆栈大小相关、因此我增加了 httpTask 的堆栈、但它没有明显的效果或无法防止意外输出。 参考下面的代码片段和控制台日志、似乎请求和请求主体已成功传输(因为服务器接受并积极验证请求主体的内容)、 但由于存在重发送超时、我倾向于认为服务器不会及时发回确认(从而触发重发送)、或者 NDK/RTOS 未正确接收/解释其确认。 为了简洁起见、我只想发布看起来像相关代码的内容、但如果需要更多上下文、请告诉我。 目前、这是一个独立的项目、但当它与主 RTOS 项目集成时、这种重新传输引起的延迟可能会导致时序问题、因此我想将其插入到萌芽状态。 是否有人能够就如何解决这一问题提供一些见解和/或建议?

在 http 客户端已初始化并连接到服务器后:
while (1){
Semaphore_pend (https://BIOS_wait_forever);

RET = HTTPCLI_sendRequest (&CLI、HTTPStd_POST、Request_URI、false);
如果(ret < 0){
printError ("httpTask: send failed"、ret);

如果(ret =0){
System_printf ("HTTP POST 请求:成功\n");
system_flush();


RET = HTTPCLI_sendRequestBody (&CLI、(const char *)&sendBuf、strlen (sendBuf));// sizeof (sendBuf);
如果(ret < 0){
printError ("httpTask:发送请求正文失败"、ret);
//Task_sleep (1000);

如果(ret =0){
System_printf ("请求正文:已发送\n");
system_flush();

//}while (ret < 0);

RET = HTTPCLI_getResponseStatus (&CLI);
if (ret!= HTTPStd_OK && ret!= HTTPStd_no_content){
printError ("httpTask:响应状态不是200 (OK)或204 (no content)"、ret);

System_printf ("HTTP 响应状态代码:%d\n"、ret);
system_flush();


控制台输出:
HTTP POST 请求:成功
请求正文:已发送
00065.500 TcpTimeoutRexmt:重新发送超时
HTTP 响应状态代码:200
服务器响应类型:application/json;charset=UTF-8
服务器响应长度:216
"连接":保持活动

响应正文:
{"确认":"成功"。 //这是一个长响应,所以我截断了它

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

    这真的是一个好地方。 只要您没有得到很多这样的信息、这并不是一个真正的问题。 TCP 的设计可处理此问题。

    Todd