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:在一些调用后、HTTPCli_Connect 返回-101

Guru**** 2611705 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/764570/rtos-httpcli_connect-returns--101-after-some-calls

工具/软件:TI-RTOS

您好!

RTOS 2.16.0.08
TI v18.12.0.LTS
NDK 2.25.00.09
NS 1.11.00.10

我有与此帖子中的解码完全相同的问题:(在循环中进行一些调用后、我得到了-101、并且在每次迭代中遵循-102)

遗憾的是、未设置任何解决方案。 您能否建议一种如何使用 HTTPCL_CONNECT 的方法? 这是我的一个非常紧迫的问题。 提前感谢您!

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

    周一有人会对此进行研究。

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

    您好!

    我想与大家分享有关这个问题的更多细节。 我已根据以下帖子修改了我的代码:

    "一. 建议保持打开的连接、除非您每次都连接到不同的主机。 由于启动开销过慢、保持连接也有助于缩短交易时间。"

    我做了他建议的事情,现在做得很好,但我仍然不知道 HTTPCL_库中持续内存分配背后的原因是什么。 建议的保持 http 连接的解决方案是一种变通办法、我不知道为什么应该起作用。  

    感谢您的回复!

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

    每当打开 TCP 套接字时、都会分配发送和接收缓冲区。 缓冲区的大小取决于目标和配置。 当您在该套接字上调用 close 时、它将进入 TCP 的关闭阶段。 在这种情况下、由于您在其上发出 Close 命令、这会导致激活 Close 命令。 然后、套接字进入 TIME_WAIT 状态、在该状态下、它将等待2倍的 MSL、该 MSL 应为60秒。 如果快速创建和关闭 TCP 套接字、则许多套接字将处于 TIME_WAIT 状态、暂存区内存将耗尽(缓冲区徘徊)、从而导致内存不足错误。

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

    感谢您的解释。 处理此问题的建议方法是什么?  

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

    建议的处理方法是尽可能保持连接断开。 如果没有、您可以在打开新套接字之前添加一些额外的睡眠时间、以允许清理处于 TIME_WAIT 状态的任何套接字。 如果这两个选项都不起作用,则可以在套接字上设置 SO_LINGER 选项,使其不会四处徘徊,但不建议这样做。

    谢谢、
    Gerardo