我正在将基于套接字的应用程序从Linux移植到Windows CE 6.0。我遇到了一行代码,它为接收超时设置了套接字选项。用于Windows CE的端口setsockopt()与RCVTIMEO
struct timeval timeout = 200; timeout.tv_usec = 200000; setsockopt(mySock, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, (socklen_t) sizeof(timeout));
我寻找可能的移植实现,并且能找到这两个线程相关的。 setsockopt() with RCVTIMEO is not working in windows mobile5和 Set timeout for winsock recvfrom
设定接收超时为200毫秒之后,存在到的recv()的调用,用于从远程IP(发送者)接收数据。 清楚地解释第一个链接产生一个线程并等待它,但200ms看起来太少,因为发件人发送约10秒。 第二个链接的select()建议是我添加到我的代码中的,但行为非常不一致。有时它不会收到数据包,有时会收到1个,有时甚至更多但现有的实现在Linux上正常工作。
我在做正确的移植吗?任何人都可以指出可能的错误或提出建议吗?
谢谢!
您是否考虑添加一些错误检查?例如到'setsockopt()'调用? – EJP