VxWorks sockLib是否支持SO_RCVTIMEO选项,setockock可以使用该选项来设置recv调用的超时,例如在winsock中?

问题描述 投票:1回答:1

VxWorks sockLib是否支持setockopt可以用来设置recv调用超时的SO_RCVTIMEO选项,例如在winsock中?

这里是Windows中的呼叫示例:

int timeout = 30000; // 30 seconds
status = setsockopt(socket, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout, sizeof(int));

令人困惑的是,setsockopt返回的状态并不表示来自未知选项的错误,而SO_RCVTIMEO是在sockets.h中定义的。但是,该调用仍然无法产生所需的操作,我找不到任何支持该操作的文档。

如果不支持,对等效方法有何建议?

我正在使用VxWorks 5.4。我想知道它是否可以在更高版本中使用。

c sockets networking vxworks
1个回答
0
投票

我无法直接回答此问题,但是我可以说,要解决这些类型的“阻塞接收”样式问题,请在等待传入套接字数据时使用select()函数指定超时。然后,您可以完全避免阻塞recv()调用,直到您知道套接字中有可用数据为止。

我向VxWorks(#include“ selectLib.h”)以及Linux和Windows套接字库推荐此解决方案。 SO_RCVTIMEO很有用,但是select()在所有操作系统上都更有用。

© www.soinside.com 2019 - 2024. All rights reserved.