从套接字读取时,如果返回EWOULDBLOCK ..是否可能只读取部分数据? 或者,当返回EWOULDBLOCK时,数据读取是否为0?
答案 0 :(得分:4)
如果没有数据可用且没有阻止,则返回从套接字读取时,如果返回EWOULDBLOCK
EWOULDBLOCK
。
..是否可能只读取部分数据?
没有
如果没有数据可用且没有阻止,则返回或者当返回EWOULDBLOCK时,数据读取是否为0?
EWOULDBLOCK
。
答案 1 :(得分:-1)
当从O_NONBLOCK套接字读取时,如果没有可用数据, recv 将返回-1并设置 EWOULDBLOCK 或 EAGAIN 。
是否可能只读取部分数据?
是:调用 recv 将返回尽可能多的当前可用信息 - 直至请求的金额。
你还应该看看recv的标志,特别是 MSG_WAITALL 和 MSG_PEEK 。
如果recv返回0,则表示套接字已在对等体上正确关闭,并且没有待处理的数据。