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

SO_SNDBUF和SO_RCVBUF都是8192,接收方不接收,为什么发送方会是在发送33K字节后阻塞?这个33K是怎么回事?

楼主lsgt(天下第七)2005-12-22 17:04:47 在 VC/MFC / 网络编程 提问

建立连接后,发送方每次发送1024字节,而接收方不接收数据,为什么发送方在发送了32K数据之后,select才会阻塞?之前select都返回可写。  
   
  int   iSend=0;  
  年int   iSize=64*1024;  
  fd_set   fdWrite;  
  while(iSend<iSize)  
  {  
  FD_ZERO(&fdWrite);  
  FD_SET(s,&fdWrite);  
  timeval   tv={0,1};  
   
  if(1==select(0,NULL,&fdWrite,NULL,&tv))  
  iSend+=send(s,(char*)ar,iPerSize,0);  
  else  
  TRACE("Blocked.   already   send   %d\n",iSend);  
  }  
   
  接收方在建立连接之后不调用recv。为什么发送方总是在发送33792字节后阻塞?哪位帮忙解释一下,为什么会是33792字节?  
   
  本机测试,windows2003+sp1 问题点数:100、回复次数:7Top

1 楼nuaawenlin(飘人)回复于 2005-12-22 19:09:58 得分 60

tcp有自己的滑动窗口算法  
   
  在窗口没有满之前,都可以发送  
   
  并且send只是把数据从用户缓冲区拷贝到系统缓冲区。  
  然后tcp根据滑动窗口算法将系统缓冲区中的数据发送出去  
   
  由于对方没有recv,所以造成了拥塞。达到滑动窗口大小(一般为16k)时,对方tcp回复的接收窗口为0,通知发送方由于拥塞,无法进行继续发送。  
   
  而此时发送方已经向接收方发送了16k的数据。发送方自己又有16k的发送窗口区间。  
   
  所以当你发送到32k时,send将会返回发送窗口为0的错误Top

2 楼lsgt(天下第七)回复于 2005-12-23 10:07:23 得分 0

谢谢。不过阻塞不是在32K,而是在发送了33K(33792)字节后。即以上代码的iSend=33792。  
  Top

3 楼lifengice0706(无)回复于 2005-12-23 14:21:01 得分 0

改改reg里的滑动窗口试试!TcpwindowSize,记着好像是在大于64K后,还要加入Tcp1323opts   (DWORD     3)。记不清了,可上网查查!Top

4 楼lifengice0706(无)回复于 2005-12-23 14:28:00 得分 0

改reg试试,滑动窗口TcpWindowSize,好像是大于64K时,还要加Tcp1323Opts   (DWORD     3)。你可上网查查!Top

5 楼lsgt(天下第七)回复于 2005-12-26 08:18:50 得分 0

我不是想改动这个值,就是想知道为什么会是33K,哪位给解释一下?Top

6 楼softrain(曾经的月光,现在的日光)回复于 2005-12-26 14:11:20 得分 40

发送32K肯定是不会告诉你窗口阻塞,当你再发送第33K的IP分片时,就会告诉你发送被阻塞.  
  你可以这样试试,先发送32K,对方不接收,再发送1个字节,系统应该就会告诉你发送被阻塞了.Top

7 楼lsgt(天下第七)回复于 2005-12-28 10:15:13 得分 0

SORRY,我搞错了,softrain(敢笑杨过不痴情)   和   nuaawenlin(飘人)   是对的。Top

相关问题

  • 字节处理成K,M
  • 请问用Get方式传递参数时,最多能传递多少K字节?
  • 单字节,双字节
  • 字符->字节
  • 类字节问题
  • 中文的两个字节,前面的是高字节还是低字节?
  • 单双字节问题
  • 何谓“字节对齐”
  • 汉字,字节。快快快!!
  • 字节数组问题

关键词

  • 数据
  • 接收
  • 发送
  • isend
  • select

得分解答快速导航

  • 帖主:lsgt
  • nuaawenlin
  • softrain

相关链接

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

广告也精彩

反馈

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