这是我的场景。我有一个与服务器通信的 TCP 客户端。服务器和客户端都在本地计算机 (Windows) 上运行。
对话框类似于:
- 客户端向服务器发送数据(请求)
- 客户端确实关闭以在套接字上发送
- 客户端通过读取响应阻塞
- 服务器接收数据、处理并发回响应(一次性,不分成块)
- 服务器确实关闭以在套接字上发送
- 客户端收到响应,并继续处理。
在第 3 步,我正在使用 recv() 调用来阻止并从套接字读取数据。此时,我想偷看一下有多少字节的数据可用,这样我就可以分配这么多的内存。通过设计,知道服务器已经发送了所有数据,并且没有更多的数据可以发送这个请求。(参见上面的步骤 5)。
我已经尝试使用带有 MSG_PEEK 选项的 recv() ,但这似乎并没有给出可用的字节总数。
有没有办法找回它?
提前致谢。