错误:套接字选择()函数在iOS系统中始终返回零



谁能告诉我为什么下面的代码大多数时间返回0。 某时间返回 1.我在3G网络中测试它。 那就是让玩家时而玩,时而暂停。我很困惑?

fd_set  readSet;
struct timeval tv;
tv.tv_sec = 0;
tv.tv_usec = 250*1000;
FD_ZERO( &readSet );
FD_SET( http->fd, &readSet );
ret = select(http->fd + 1,&readSet,0,0,&tv);

您已将读取超时设置为 250 毫秒,因此当超时到期且未收到任何数据时select()返回。这是预期行为,尤其是在可能受到高延迟影响的手机网络连接上。

请允许我在这里提出一个更好的办法。使用 CFSocket 包装文件句柄,然后将其作为事件源添加到应用程序的运行循环中。这将完全消除对select()的需要。

最新更新