相关疑难解决方法(0)

选择系统调用的虚假就绪通知

http://linux.die.net/man/2/select上,在BUGS部分,提到选择系统调用有时可以虚假地设置FD就绪,随后的读取调用将返回0.文本描述了一个这样的例子(错误的校验和)但我假设还有其他原因(否则他们会解决这个问题).

任何想法可能导致另一个原因选择返回FD准备虚假.

这是否也适用于其他操作系统.我目前正在询问Linux.

上述链接的相关部分:

在Linux下,select()可以将套接字文件描述符报告为"准备好读取",而不是后续的读取块.这可能例如在数据到达时发生但在检查时具有错误的校验和并被丢弃.可能存在其他情况,其中虚假地报告文件描述符为就绪.因此,在不应阻塞的套接字上使用O_NONBLOCK可能更安全.

sockets select system-calls

9
推荐指数
1
解决办法
4175
查看次数

非阻塞套接字上的select(),recv()和EWOULDBLOCK

我想知道以下情况是否真实?!

  1. 非阻塞TCP套接字上的select()(RD)表示套接字已就绪
  2. 以下recv()将返回EWOULDBLOCK,尽管调用select()

c c++ sockets

9
推荐指数
2
解决办法
2万
查看次数

标签 统计

sockets ×2

c ×1

c++ ×1

select ×1

system-calls ×1