我有一个c语言的客户机-服务器程序。
我使用select来确保客户机准备好接受数据(即,客户机处于select返回的write-fds中)。
如果客户机确实准备好接受数据,那么我可以确定如果我发送到这个客户机(使用c方法“send”,并且要发送的字节数大于0),那么实际发送的字节数(=由“send”返回)至少是1个字节吗?还是0仍然可能?
谢谢
*请注意,客户端只连接到一台服务器,而没有其他服务器。

最佳答案

零永远不可能。它将至少传输一个字节并返回开销,或者如果缓冲区在非阻塞模式下已满,则返回-1,或者如果出现错误,则返回-1,并返回其他值。如果errno == EAGAIN/EWOULDBLOCK另有指示,则不应给出errno,除非存在对套接字的多线程写入。

关于c - C TCP套接字,使用select后“发送”是否可以返回0?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33987486/

10-11 22:32
查看更多