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.

[参考译文] TM4C129ENCZAD:TI NDK 只允许6个连接到我的器件

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/839992/tm4c129enczad-ti-ndk-only-allowing-6-connections-to-my-device

器件型号:TM4C129ENCZAD

您好!

我看到一个奇怪的问题、在我的 Tiva 处理器上运行的 TI NDK 只允许6个 TCP 连接到我的器件。  一旦建立到器件的6个 TCP 连接、其它连接将不会建立、并且当被调用时 NDK_ACCEPT ()总是返回 EWOULDBLOCK。

我无法发布我的代码、但我将在这里进行汇总:

  1. 代码使用 DHCP 获取分配的 IP 地址等
  2. 代码有一个单独的线程运行以处理 TCP 连接
  3. 在初始化期间,任务调用 fdOpenSession()
  4. 在初始化期间、任务调用 NDK_socket (AF_iNet、SOCK_STREAM、IPPROTO_TCP)
  5. 在初始化期间、任务会调用 NDK_setsockopt 来:
    1. 将 SO_blocking 设置为0 (非阻塞套接字)
    2. 将 SO_KEEPALIVE 设置为60
    3. 将 SO_RCVTIMEO 设置为30000微秒
    4. 将 SO_SNDTIMEO 设置为1秒
    5. 设置 SO_Linger、使用 linger_opt.l_linger = 1、linger_opt.l_onoff = 0
  6. 在初始化期间,任务使用 AF_iNet、来自 DHCP 的 IP 地址和端口号9970调用 NDK_BIND()
  7. 在初始化期间、任务最终调用 maxcon 被设定为8的 NDK_listen()(我们将只处理8个连接)
  8. 在循环中,任务调用 NDK_Accept()以查找新连接

在整个初始化过程中进行了错误检查、对于前6个连接、一切都正常、NDK_ACCEPT ()返回有效的套接字句柄。  但在建立6个连接后,NDK_ACCEP()始终返回 EWOULDBLOCK 错误。  是否有人看到过类似的内容、或者是否有人对如何允许所有8个连接提出了任何建议?  

谢谢!