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.
https://e2e.ti.com/support/processors-group/processors/f/processors-forum/595697/rtos-ndk-sockets
工具/软件:TI-RTOS
您好!
我已设置 TCP 服务器并启用 套接字的选项: SO_RCVTIMEO、SO_SNDTIMEO。
我用标志 MSG_WAITALL 来调用 recv() ,我注意到 recv()没有超时(即在用 SO_RCVTIMEO recv()定义的时间之后,仍然是 blocks())
从我读取的内容中,我找不到明确的答案,但它听起来似乎超时选项应该有效,如果设置,即使在 recv()中使用 MSG_WAITALL 也是如此。
我还尝试从 recv()中删除 MSG_WAITALL (将 flags 参数设置为0),但仍然会永久阻止 recv(),而不会出现任何超时。
您能否解释(或帮助解决) 为什么超时不保持?
谢谢
家伙
大家好、
我用2.24.02.31 (再次用2.25.00.09)尝试了一个示例、它运行良好。 我将 SO_RCVTIMEO 和 SO_SNDTIMEO 设置为5秒。 我的笔记本电脑发送了一个 TCP 数据包(在端口1000上)、目标刚刚回显。 我让笔记本电脑停止发送一个位、但没有关闭插座。 我检查(通过 Wireshark)目标在5秒内关闭了插座。
这是我用于测试的主要源文件。
Todd
so_keepalive 选项位于我调整的示例中。 我希望它在那里用于测试目的。 默认发送时间为2小时。 如果 recv/send API 上没有超时、它有助于确保事件仍然有效。
我看不到等效的 strerror。 我向其中一位 NDK 工程师发出了命令。