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.

[参考译文] TM4C129XNCZAD:使用 TIRTOS 以太网 NDK 库重置 TCP 连接

Guru**** 2392435 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/839058/tm4c129xnczad-tcp-connection-reset-with-tirtos-ethernet-ndk-library

器件型号:TM4C129XNCZAD

您好!

我们使用 TI RTOS 和 NDK 库与服务器进行以太网连接。 当执行 SSL 握手时、客户端(使用 TI RTOS 的器件)在向服务器发送一些数据包后复位连接。

我想在某些网络场景中再添加一点、它可以正常工作、但在某些不同的网络上、它不起作用。

我已使用 NDK 附加了客户端设备的 Wireshark 日志。 请建议此问题的可能解决方案。

e2e.ti.com/.../WiresharkLog.zipThanks。

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

    Saleem、您好!

    Wireshark 日志显示为客户端处于连接呼叫的中间位置。 CONNECT 是否返回错误代码?

    此致、

    达尔顿

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

    您好!

    是的、它返回错误代码  -103

    我们已经测试过多次、每次连接调用的同一个点都失败。

    不应出现任何防火墙问题、因为客户端和服务器之间正在交换数据包以获取 hello 消息。 正确吗?

     

    谢谢。

     

     

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

    Saleem、

    感谢您的更新。 该错误对应 于 ECONNABORTED,只能由 Accept()调用返回。 您确定它不是来自该函数吗? 不过、该返回代码已在不同的 SDK 版本中移动。 您使用的是 SDK 的哪个版本?

    此致、

    达尔顿

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

    您好!

    我们从 funciton sock_send 的下面一行中得到错误-103。

    否则{
    nbytes = sock->s、(void *) buf、ilen、flags);

    sprintend 调用函数 sock_send。  HTTPCLI_sendRequest 调用函数   sprint.

    因此、我们调用函数  HTTPCLI_sendRequest 、该函数在调用 返回-103的 sock_send 时。

    我们使用以下版本。

    TI RTOS v2.16.01.14

    NDK v2.25.01.11

    WOLFSSL v3.9/10

     

    谢谢。

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

    Saleem、您好!

    啊、我明白了。 是否也可以修改应用程序,在返回-103错误后打印 fdError()的返回? 103错误告诉我们 NDK 的 send()函数以某种方式失败,fdError()可以告诉我们 send()如何失败。

    您还调用哪个 HTTPCLi_*函数,该函数最终将调用 SSOCK_SEND?

    此致、

    达尔顿

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

    您好!

    我已经修改了应用程序,以便在返回-103错误后显示 fdError()的返回值。 fdError 返回值55

    HTTPCLI_sendRequest 是最终调用 SSOCK_SEND 的函数。

    谢谢。

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

    Saleem、您好!

    该错误代码意味着您正在用尽套接字缓冲区。 这将解释为什么您的应用仅在某些网络环境中工作。 在应用程序无法正常工作的环境中、可能会发送大量广播消息、这些消息会占用您所需的缓冲区(它们会快速释放、但如果它们足够快、则在您希望发送时不会使用任何缓冲区)。  

    您可以配置您的应用程序经过的缓冲区数量。 本页 详细说明了如何执行该操作。 如果您使用的是 config、则只需在*。cfg 文件中编辑或添加此行即可

    global.pktNumFrameBufs=16;//增加此数字,直到停止从 fdError()中获取55 

    此致、

    达尔顿