C TCP套接字,使用select后'发送'可以返回0吗?

问题描述 投票:0回答:1

我有一个用 C 语言编写的客户端-服务器程序。 我使用 select 来确保客户端已准备好接受数据(即 client_fd 位于 select 返回的 write_fds 中)。 如果客户端确实准备好接受数据,我可以确定如果我发送到这个客户端(使用c方法'send',并且要发送的字节数> 0),实际发送的字节数(= =“发送”返回)至少为 1 个字节,或者 0 仍然可能吗?

  • 请注意,客户端仅连接到一台服务器,没有连接到其他任何东西。
c sockets asynchronous client-server posix-select
1个回答
0
投票

零永远不可能。它将传输至少一个字节并返回成本,或者如果在非阻塞模式下缓冲区已满,则返回 -1 并带有

errno == EAGAIN/EWOULDBLOCK
,或者如果存在严重错误,则返回 -1 并带有其他
errno
。如果
-1/EAGAIN/EWOULDBLOCK
另有指示,则不应给出
select()
,除非存在多线程写入套接字的情况。

© www.soinside.com 2019 - 2024. All rights reserved.