ios - 错误 :socket select() function always returning zero in iOS system

标签 ios sockets select

谁能告诉我为什么下面的代码大多数时候返回 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() 的需要。

关于ios - 错误 :socket select() function always returning zero in iOS system,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19017805/

相关文章:

java - 在本地机器上调用特定网页时触发 Java 代码

php - MYSQL SELECT CASE 带变量

ios - 分发应用程序时将文本文件放在哪里?

python - 扭曲有好处吗?

c - 获取地址信息错误 : ai_socktype not supported

mysql - 在 MySQL 事件中从另一个表插入和选择(取决于日期)

MySQL检查字段中是否有数字

ios - Swift 3 - Firebase 推送通知,我该怎么做?

ios - 不鼓励在分离的 View Controller 上呈现 View Controller

iphone - setIndentationLevel 不适用于 cell.ContentView subview