我有一个用 C 语言编写的客户端-服务器程序。 我使用 select 来确保客户端已准备好接受数据(即 client_fd 位于 select 返回的 write_fds 中)。 如果客户端确实准备好接受数据,我可以确定如果我发送到这个客户端(使用c方法'send',并且要发送的字节数> 0),实际发送的字节数(= =“发送”返回)至少为 1 个字节,或者 0 仍然可能吗?
零永远不可能。它将传输至少一个字节并返回成本,或者如果在非阻塞模式下缓冲区已满,则返回 -1 并带有
errno == EAGAIN/EWOULDBLOCK
,或者如果存在严重错误,则返回 -1 并带有其他 errno
。如果 -1/EAGAIN/EWOULDBLOCK
另有指示,则不应给出 select()
,除非存在多线程写入套接字的情况。