【发布时间】:2011-08-07 02:48:06
【问题描述】:
我正在 Linux 下编写一个从 TCP 套接字获取数据的接口。用户提供一个缓冲区来存储接收到的数据。如果提供的缓冲区太小,我只想返回一个错误。第一个问题是确定缓冲区是否太小。 recv() 函数只返回实际写入缓冲区的字节数。如果我使用 recv() 联机帮助页上说明的 MSG_TRUNC 标志,它仍然会返回相同的结果。第二个问题是丢弃仍在套接字中排队的数据。因此,如果我确定我提供的缓冲区太小,我只想擦除留在套接字上的所有内容。除了再次关闭和打开套接字或只是接收直到什么都没有之外,还有其他方法可以做到这一点吗?最好的问候
一个建议是只接收直到什么都没有留下(我返回 0)——但结果不是必须等待预设的超时(在这种情况下是 5 秒吗?)因为每次我调用接收它都会等待数据或超时?
【问题讨论】:
-
免责声明/解释位是不必要的。只要问你的问题。
-
拜托,你能提供原帖的链接吗?