使用套件调用recv的时候的返回条件

如果接受缓冲区未满,recv一定会返回么,比如客户端调用send,这时recv返回了。

那么会不会出现这样的情况,客户端调用send后,服务端缓冲未满,recv没有返回,这时客户端又调用了几次send,服务端直到缓冲区满之后才返回。

服务端怎么判断send发送结束了?

推荐图书

  • C++ Primer中文版(第4版)
  • More Effective C++:35个改善编程与设计的有效方法(中文版)
  • 设计模式:可复用面向对象软件的基础


1个回答

关于服务器判断客户端是否send结束这个是由发送来告诉服务器的。

比如发送方先告诉客户端 我要给你发送1024个字节。那么服务器收到1024个字节就知道数据发送完毕了。至于是继续recv还是close socket这个就看自己的需求了。

服务器是不知道客户端神马时候发送完毕的。当然如果客户端断开了连接这个时候服务器端recv 会返回 0。