请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C129ENCZAD 您好!
我看到一个奇怪的问题、在我的 Tiva 处理器上运行的 TI NDK 只允许6个 TCP 连接到我的器件。 一旦建立到器件的6个 TCP 连接、其它连接将不会建立、并且当被调用时 NDK_ACCEPT ()总是返回 EWOULDBLOCK。
我无法发布我的代码、但我将在这里进行汇总:
- 代码使用 DHCP 获取分配的 IP 地址等
- 代码有一个单独的线程运行以处理 TCP 连接
- 在初始化期间,任务调用 fdOpenSession()
- 在初始化期间、任务调用 NDK_socket (AF_iNet、SOCK_STREAM、IPPROTO_TCP)
- 在初始化期间、任务会调用 NDK_setsockopt 来:
- 将 SO_blocking 设置为0 (非阻塞套接字)
- 将 SO_KEEPALIVE 设置为60
- 将 SO_RCVTIMEO 设置为30000微秒
- 将 SO_SNDTIMEO 设置为1秒
- 设置 SO_Linger、使用 linger_opt.l_linger = 1、linger_opt.l_onoff = 0
- 在初始化期间,任务使用 AF_iNet、来自 DHCP 的 IP 地址和端口号9970调用 NDK_BIND()
- 在初始化期间、任务最终调用 maxcon 被设定为8的 NDK_listen()(我们将只处理8个连接)
- 在循环中,任务调用 NDK_Accept()以查找新连接
在整个初始化过程中进行了错误检查、对于前6个连接、一切都正常、NDK_ACCEPT ()返回有效的套接字句柄。 但在建立6个连接后,NDK_ACCEP()始终返回 EWOULDBLOCK 错误。 是否有人看到过类似的内容、或者是否有人对如何允许所有8个连接提出了任何建议?
谢谢!