gpt4 book ai didi

c++ - 用 recv() 接收部分数据,这可能吗?

转载 作者:行者123 更新时间:2023-11-30 00:56:15 25 4
gpt4 key购买 nike

我在 winsock 中使用非阻塞套接字,我想知道我是否可以部分接收数据?

我的数据包包含一个“长度”字,我必须先读取它,然后根据“长度”读取整个数据包。

实际上这个问题就像“recv() 是如何工作和结束的?”,我可以使用 recv() 直到我获得所有数据吗?

最佳答案

这取决于套接字的类型。如果它是一个数据报套接字,recv 将恰好读取一个完整的数据报。如果是 TCP 套接字:

  • recv 会在返回前读取至少一个字节
  • recv 可以读取多个完整的message

如果你使用的是 TCP,你可能会想做这样的事情:

  • 至少读取组成长度的字节
  • 读取length个字节
  • 您现在有一条完整的消息
  • 冲洗,重复

您可以从 readn function 开始.

关于c++ - 用 recv() 接收部分数据,这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10690814/

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