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.

[参考译文] CC3235MODASF:CC3235SF BSD 套接字限制:为什么 TCP 服务器只能接受 14 个客户端而不是 16 个客户端?

Guru**** 2756835 points

Other Parts Discussed in Thread: CC3235SF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1607760/cc3235modasf-cc3235sf-bsd-socket-limit-why-tcp-server-can-accept-only-14-clients-instead-of-16

器件型号: CC3235MODASF
Thread 中讨论的其他器件: CC3235SF

  • 您好 TI、

    根据 CC3235SF 文档、SimpleLink Wi-Fi 网络处理器支持高达 16 BSD 套接字

    在我的应用中、器件运行一个使用 BSD 套接字实现的 TCP 服务器。
    除了侦听套接字和接受的客户端套接字之外、不会打开其他用户创建的套接字。
    应用程序不会显式创建或管理任何其他网络服务。

    TCP 服务器流程如下:

    1. sl_Socket()

    2. sl_SetSockOpt()→将套接字设置为非阻塞

    3. sl_Bind()

    4. sl_Listen()

    5. sl_Select()来监视事件

    6. 当侦听套接字是可读的时、调用sl_Accept()以接受新的客户端连接

    7. 每个接受的客户端都使用自己的套接字

    sl_Socket()除了侦听套接字和接受的客户端套接字之外、不会进行其他调用。


    观察到的行为

    • 服务器可以成功接受 仅 14 个 TCP 客户端连接

    • 达到此限值后:

      • sl_Accept()退货< 0(例如 ENOBUFS / EAGAIN)

      • sl_Select()继续指示侦听套接字是可读的

    • 侦听套接字本身保持有效和开放状态

    • 何种影响 可重现且一致


    预期行为

    根据文档、我预计:

    • 1 个侦听套接字

    • 多达 15 个套接字可用于接受的 TCP 客户端连接

    然而、实际上、接受客户的最大数目是 14 个。


    问题

    1. 为什么是实际限制 14 个 TCP 客户端连接 、而不是 15(或 16,包括监听套接字)?

    2. 一些 BSD 套接字 由 NWP 在内部保留 (即使只有 TCP 服务器正在运行)?

    3. 是否有任何官方文档描述有多少套接字可供用户分配、而不是在 CC3235SF 上内部保留?

    请作出任何澄清。

    谢谢你。

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

    您好、

    据我所知、一个套接字用于您正在收听的实际主套接字。

    如果使用多个选择选项(而不是触发的选择)、则使用另一个套接字。

    您可以在 NWP 用户指南 6.7.3 多选中阅读所有相关内容。

    此致、

    Shlomi