如果服务器发送4个字节
send(sock, buffer1, 4, 0);
客户端恰好等待4个字节
recv(sock, buffer2, 4, 0);
是否有可能写入少于4个字节buffer2
?没有其他的send
或recv
以前做过的。
如果没有可能,send
可以执行的最大缓冲区大小是多少,以便recv
一次调用可以得到相同的缓冲区大小。
在手册页中recv
:
“这些调用返回接收到的字节数,如果发生错误,则返回-1。
对于TCP套接字,返回值0表示对等方已关闭其连接的一半。”
这样recv
的总是允许返回所有发送的字节数,不是较少的发送的字节数,或者根本没有发送字节。您不能仅仅因为碰巧知道send
连接另一端正在做什么而做任何事情。
无法保证您始终都能获得完整的消息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句