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.

[参考译文] SIMPLELINK-CC32XX-SDK:断开连接后 TCP 套接字保持断开状态

Guru**** 2555630 points
Other Parts Discussed in Thread: CC3235MODSF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1047238/simplelink-cc32xx-sdk-tcp-socket-stays-open-after-disconnection

器件型号:SIMPLELINK-CC32XX-SDK
主题中讨论的其他器件:CC3235MODSF

您好!

我想在多个会议上提出一个关于我的问题的后续问题。 正如我在上 一篇文章中提到的、我们正在使用 CC3235MODSF 作为 TCP 客户端开发应用程序。

创建套接字并连接到套接字后、我们设置套接字分块并使用 sl_Recv 等待第一个字节。 稍后、数据交换完成、我们可以在进入休眠之前关闭插座。 这样、套接字将关闭、我们可以创建一个新套接字、以便在器件唤醒并获取 IP 时连接到服务器。

但是、如果器件在能够关闭插座之前断开连接、则无法实现这一点。 尽管器件在10-20秒内重新连接、但 blocking sl_Recv 函数返回0、我们被迫打开一个新的套接字以连接到服务器。 遗憾的是、这会导致上一个会话在服务器端保持打开状态。 是否有任何方法可以避免客户端出现此问题,或者服务器端是否应该考虑此问题?

此外、我可以说、在从一个 AP 快速切换到另一个 AP 时、套接字不会返回任何错误。 仅当此切换需要时间时才会出现此问题。

非常感谢你的帮助。

最棒的

欧格尔肯

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

    您是否在器件重新连接到网络之前获得了 sl_Recv ()=0?

    是否在获得 sl_Recv ()=0后调用 sl_close? (当器件已经(重新)连接到网络(即 Wi-Fi 路由器)时、尝试调用 sl_close)

    当无法重新连接到服务器时,您会遇到什么类型的错误? (即 sl_Connect 的返回代码是什么)  

    什么是服务器? 您对它有任何控制吗? 是否可以设置服务器的保持活动超时?

    减少服务器端的 TCP KA 超时将使其更快地识别连接丢失(但它将要求器件更频繁地唤醒)。

     

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

    您好、Kobi、

    否,在设备重新连接到网络并尝试向服务器发送任何数据后,我收到 sl_Recv()=0。 如果我没有向服务器发送任何数据、我将不会收到任何错误。

    是的、我在获取 sl_Recv ()=0后调用 sl_close。 我尝试在器件重新连接到网络后立即调用 sl_close、但结果相同。 之前的会话仍然保持活动状态、但我仍需要打开一个新套接字。

    在 sl_Socket 之后调用 sl_Connect 时、我不会收到任何错误。 问题是、即使我调用 sl_close、前一个套接字仍保持打开状态。 如果器件与网络断开连接并重新连接、您是否建议我仅调用 sl_Connect 而不调用 sl_Socket?

    我们的客户可以控制服务器。 我将要求他们添加 TCP KA 超时实现、以便服务器可以确保会话在特定超时后丢失。 即使这是10分钟、也足以终止之前的会话。

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

    您好!

    您是否在重新连接过程中重新启动 NWP (sl_Stop ()/sl_Start ())?

    1月

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

    您好!

    不、我不这么做。 我使用的是自动连接、因此一旦器件足够接近新 AP、就会重新连接。

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

    您好!

    确定。重新连接后,是否确定从 DHCP 服务器分配了相同的 IP 地址?

    请等待 Kobi 的答复。 您应提出以下问题...  是否在分配了相同的 IP 地址时、新 WLAN 连接后所有打开的套接字都无效? 如果是、则无法解决客户端问题的解决方案。 否则、在重新连接后、应该有足够的空间使用适当的套接字句柄来调用 sl_close()。

    1月

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

    您好!

    是的、我可以确认在重新连接后分配了相同的 IP 地址。

    非常感谢您的参与。 在这种情况下、我将等待 Kobi 回答是否可以成功关闭套接字。

    最棒的

    欧格尔肯

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

    套接字级别和 WLAN 级别之间没有关系。

    WLAN 级别的断开(和重新连接)会使 IP 套接字失效(如果在断开连接期间发送了太多未应答的数据包、则可能会影响套接字)。

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

    这是否可能是由于我们在接收一个字节时始终阻止套接字、即使在断开连接期间也是如此?

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

    我刚刚测试了在非阻塞模式下轮询套接字、如果没有数据、则在特定时间内休眠。 但是、结果是相同的。 断开连接并重新连接后、一旦我向服务器发送一个字节、sl_Recv 就返回0。

    此外、我通过为 AP/热点供电来强制执行断开事件。 这是否可能导致问题? 如果由于范围而断开连接、情况是否会有所不同? 我在看到 CC3235MODSF 上的断开事件后立即为 AP 加电。 默认情况下,客户端上的 TCP 保持活动超时为5分钟。 因此、在断开连接期间不应存在任何未应答的数据包、因为重新连接最多需要20秒。

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

    在断开连接期间、插座上是否有任何通信?

    由于未确认的数据包太多,服务器可能决定关闭连接。

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

    否、我仅在服务器需要某些数据时强制断开连接、而不是在服务器可能发送某些数据时强制断开连接。

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

    您能否为设备与接入点之间的流量提供(802.11)空中监听器日志?

    您还可以提供和 NWP 日志(请参阅编程人员指南 https://www.ti.com/lit/swru455中的第20.1章)。

    BR、

    Kobi

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

    您好、Kobi、

    是的、当然我可以这么做。 嗅探器很容易、但我必须在办公室提供 NWP 日志。

    我如何将此数据以私人方式发送给您? 你可以给我一封电子邮件吗?

    我可以在周一我在办公室的时候把这两个信息都发送给你。

    最棒的

    欧格尔肯

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

    向您发送了一封私人邮件。 我将等待您的日志。

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

    您好、Kobi、我几天前给您发送了一封包含日志的私人邮件。 谢谢。

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

    根据 NWP 日志-我们在套接字上获得 TCP RST (重新连接后)。

    我在监听器日志中找不到它。

    您能否从同一测试中提供 NWP 和监听器日志?

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

    我在新文件夹下添加了它们。 谢谢。

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

    我将检查它们并在私人对话中作出响应。