Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 将套接字添加到受监控文件描述符列表之前,如果套接字上有数据,将选择(或epoll)将套接字标记为可读_Sockets_Epoll - Fatal编程技术网

Sockets 将套接字添加到受监控文件描述符列表之前,如果套接字上有数据,将选择(或epoll)将套接字标记为可读

Sockets 将套接字添加到受监控文件描述符列表之前,如果套接字上有数据,将选择(或epoll)将套接字标记为可读,sockets,epoll,Sockets,Epoll,我正在寻求帮助以了解以下情况: 1.我与对等方建立了TCP套接字连接。 2.我添加到要由select监视的文件描述符列表中 3.选择“提醒我套接字上的任何活动”,我的应用程序将处理套接字上的对等方发送的数据。 4.现在,我将从select监视的文件描述符列表中删除与套接字关联的文件描述符。 5.Peer向我发送了一些关于该套接字的数据。我没有阅读这些数据。 6.几秒钟后,我再次将与套接字关联的文件描述符添加到select监视的文件描述符列表中 7.现在选择是否立即让我知道套接字是可读的?如果在步

我正在寻求帮助以了解以下情况: 1.我与对等方建立了TCP套接字连接。 2.我添加到要由select监视的文件描述符列表中 3.选择“提醒我套接字上的任何活动”,我的应用程序将处理套接字上的对等方发送的数据。 4.现在,我将从select监视的文件描述符列表中删除与套接字关联的文件描述符。 5.Peer向我发送了一些关于该套接字的数据。我没有阅读这些数据。 6.几秒钟后,我再次将与套接字关联的文件描述符添加到select监视的文件描述符列表中 7.现在选择是否立即让我知道套接字是可读的?如果在步骤5中,对等方不向我发送任何数据,而是说,因为FIN。将选择仍然告诉我套接字是可读的 总之,问题是select(或其任何变体,如epoll)是否指示套接字是可读的,前提是在将套接字包括在受监控文件描述符列表中之前,套接字上存在任何活动,并且假设应用程序没有从套接字读取任何数据

  • 现在选择是否立即让我知道套接字是可读的
  • 如果在步骤5中,对等方不向我发送任何数据,而是说,因为FIN。将选择仍然告诉我套接字是可读的

    总之,问题是select(或其任何变体,如epoll)是否指示套接字是可读的,前提是在将套接字包括在受监控文件描述符列表中之前,套接字上存在任何活动,并且假设应用程序没有从套接字读取任何数据

    注意,“在将套接字包括在受监视的文件描述符列表中之前”实际上并不意味着什么。操作系统不知道你是什么时候做的。它只知道您使用该列表调用了
    select()