gpt4 book ai didi

windows - windows tcp 堆栈的缓冲区限制,特别是使用 winsocket

转载 作者:可可西里 更新时间:2023-11-01 02:52:06 25 4
gpt4 key购买 nike

在开发通过 winsocket 进行通信的 Windows 应用程序时,我遇到了以下情况:

  1. Alice 发起与 Bob 的 tcp session
  2. Bob接受, session 建立。
  3. Bob 正在按顺序发送大量数据(~1000 MB)。
  4. Bob 继续做其他事情。
  5. 与此同时,Alice 慢慢读取数据,每次读取 N 个字节(其中 N 是 Alice 缓冲区的大小,它只分配一次,因为数据在每次读取之间写入文件。此缓冲区已分配由应用程序)。

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

问题是,如何保证整个数据(~1000 mb)可供 Alice 读取?是否有限制此缓冲区长度的已知/可配置参数?

最佳答案

Alice 有一个套接字接收缓冲区,Bob 有一个套接字发送缓冲区。两者在各自套接字的生命周期内都存在。当 Alice 的 TCP 确认数据时,数据从 Bob 的缓冲区中删除,当 Alice 读取数据时,数据从 Alice 的缓冲区中删除。

关于windows - windows tcp 堆栈的缓冲区限制,特别是使用 winsocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21834553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com