我在Linux下编写一个接口,它从TCP套接字获取数据。用户提供一个缓冲区,其中存储接收的数据。如果提供的Buffer很小,我只想返回一个错误。首先问题是确定缓冲区是否很小。 recv()函数只是返回实际写入缓冲区的字节数。如果我使用recv()手册页中声明的MSG_TRUNC标志,它仍会返回相同的结果。第二个问题是丢弃仍然在套接字中排队的数据。所以,如果我确定我提供的Buffer很小,我只想擦除套接字上留下的所有内容。除了关闭并重新打开套接字或只是接收到没有剩下任何东西之外,是否还有其他方法可以这样做?最好的问候<确定是否有数据留在套接字上并丢弃它
一个建议是只是recv,直到没有剩余(我得到返回0) - 但不会因为每次我打电话给这个预设超时(在这种情况下,它是5秒? recv它等待数据还是超时?
免责声明/解释位是不必要的。只是问你的问题。 – vezult
请你能提供原帖的链接吗? – jweyrich