繁体   English   中英

Windows tcp堆栈的缓冲区限制,尤其是使用winsocket

[英]Buffer limitation of windows tcp stack , using winsocket in particular

在通过Winsocket通信的Windows应用程序上工作时,我遇到了以下情况:

  1. 爱丽丝与鲍勃发起tcp会话
  2. 鲍勃接受,并建立会话。
  3. Bob正在按顺序发送大量数据(〜1000 mb)。
  4. 鲍勃继续做其他事情。
  5. 同时,Alice缓慢地读取了当时N个字节的数据(其中N是Alice缓冲区的大小,在每次读取之间将数据写入文件时,该缓冲区仅分配一次, 该缓冲区由应用程序分配 )。

调试时,我发现Bob的send()从未阻塞,即使我在第一次读取之前暂停了Alice的时间。

问题是,怎样保证将整个数据( 〜1000 mb )保留给爱丽丝读取? 是否存在已知/可配置的参数来限制此缓冲区的长度?

爱丽丝有一个套接字接收缓冲区,鲍勃有一个套接字发送缓冲区。 两者在各自的插座的寿命中都存在。 当Alice的TCP确认数据时,会将数据从Bob的缓冲区中删除;当Alice读取数据时,会将数据从Alice的缓冲区中删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM