Socket 中Recv

::recv(Socket,recvBuf,BUFFERMAXSIZE,0);

第一个参数是建立的socket

第二个参数是用来存储的recv数据的buf

第三个参数是允许最大的接收size而不是buf的size 但是buf的size一定要大于允许最大的接收size

第四个参数是设置recv timeout用好像是

 

主要说两点

一是当server发送数据调用send函数时,调用成功只是把该部分数据拷贝到发送缓冲区,接下来的工作是由Tcp/Ip协议发送数据的。

当server端的数据比Client端的数据长时 client端recv时是多包的

len = ::recv(Socket,recvBuf,BUFFERMAXSIZE,0);

if(len == BUFFERMAXSIZE)还可以接着recv 直到len < BUFFERMAXSIZE

二是当len = -1时,可能是socket关闭。

还有当建立的是TCP连接时,网络断开是recv是可以检测到的返回len = -1所以不用担心会挂起在recv中。

posted on 2012-09-13 16:37  Yangtze_y  阅读(2890)  评论(0编辑  收藏  举报