c - 如何清除linux中的socket缓冲区

标签 c linux sockets buffer

我有一个关于套接字编程的问题。我想清除套接字缓冲区。 我尝试了以下代码:

int ret_read = read(return_events[index].data.fd, recv_buffer, sizeof(recv_buffer));
if(-1 == ret_read)
{
    if(EAGAIN != errno)
    {
        printf("read data from %d error occured, errno=%d, %s.\n", return_events[index].data.fd, errno, strerror(errno));
        /**
        Tag-position, I know buffer is not empty. I wonder clear buffer in code position.The buffer is socket recv buffer, is not recv_buffer.
        */
    }
    continue;
}

我不想在标签位置再次使用read(),因为我想将缓冲区设置为空。虽然在Tag-position中使用read(),但我认为它可能会失败。

除了Tag-position中的read()之外,有谁能告诉我另一种方法吗?

最佳答案

它与任何其他缓冲区没有什么不同

 bzero(recv_buffer, sizeof(recv_buffer));

关于c - 如何清除linux中的socket缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39156133/

相关文章:

无法从 Bison 语法文件中检索语义值

c - 在 linux c 中使用已知的 key_t 查找 msqid

linux - update-rc.d 禁用/删除不会删除 etc/init.d/rc* 引用

php - 使 stream_socket_server 在第一次收到数据包后保持功能

c - readline() 内部缓冲区

linux - 在 Docker 应用程序中,访问/proc/self/pagemap 显示不允许操作

linux - "ls"权限被拒绝,即使我对该目录具有读取权限

java - 自定义监听器

sockets - 如何响应 Dart 上的套接字

c++ - 不同的优化级别会导致功能不同的代码吗?