CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

请问在winsock中int send(const void* lpBuf,int nBuflen)的返回字节比nBuflen小是什么情况?

楼主xiaohuo(小伙)2002-04-30 11:01:02 在 VC/MFC / 基础类 提问

调用send成功后,返回值比nBuflen小是怎么回事?是不是没发送完还是接受端没收  
  全 问题点数:20、回复次数:3Top

1 楼freelybird(阿愚)回复于 2002-04-30 11:12:31 得分 10

这是我上次解释recv(..)的回答.  
  1.   TCP是流式的,它传送的byte   stream.   所以接收方recv(...)调一次可能只接收一个字节,也可接收多个字节  
  2.   所以必须循环调  
  3.   当这个socket被对方close()时,   recv(...)返回0  
  4.   当这个socket被对方错误时,   recv(...)返回<0  
   
  同样,send也类似,  
  1.   在sock中有一buffer,当你的数据发送速度快于网络速度时,它们就会同步.换句话说,当buffer满时,你即不能再了  
  2.   返回的len是实际发送的字节数  
  3.   你可以setsockopt(...)调整buffer大小Top

2 楼xuying()回复于 2002-04-30 11:21:56 得分 9

同意   freelybird(阿愚)。  
  socket的send函数是将数据拷贝到TCP协议栈的待发送缓冲区。如果TCP的缓冲区放不下所有的数据,就会只拷贝一部分,造成send返回的小于nBufferLen。当TCP实际将数据发送走后,TCP缓冲区会空出来,此时可以继续调用send,将剩余的数据拷贝进TCP缓冲区。  
   
  所以send必须循环调用,直至发送完全。Top

3 楼no1vcl(大吃一碗)回复于 2002-04-30 12:21:56 得分 1

来看看MSDN的标准答案:  
  If   no   error   occurs,   send   returns   the   total   number   of   bytes   sent,   which   can   be   less   than   the   number   indicated   by   len   for   nonblocking   sockets.   Otherwise,   a   value   of   SOCKET_ERROR   is   returned,   and   a   specific   error   code   can   be   retrieved   by   calling   WSAGetLastError.  
   
  Top

相关问题

  • int Size(void)const==const int Size(void)吗?
  • void func(const A &a) 中const的作用?
  • BYTE* void*和const void*有什么区别?
  • error C2664: 'strcpy' : cannot convert parameter 2 from 'class CString (void) const' to 'const char *'
  • 请问void foo() const中的const是什么意思?
  • void f(const char **msg) { *msg = "oh my god."; }, const 起什么作用?
  • 请问void setMinimumSize ( const QSize & ) 参数const QSize & 是什么类型?
  • 标准库函数qsort()的声明?int (__cdecl *compare )(const void * arg1, const void * arg2 ) ;
  • const?
  • const

关键词

  • socket
  • 返回
  • recv
  • 接收
  • nbuflen小
  • send
  • socket被对方

得分解答快速导航

  • 帖主:xiaohuo
  • freelybird
  • xuying
  • no1vcl

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo