我正在寻求帮助以了解以下情况: 1.建立了TCP套接字连接。2.我在文件描述符列表中添加了由select 3监视的文件描述符,选择提醒我注意套接字上的任何活动,我的应用程序处理套接字上的对等方发送的数据。4.我现在从select监视的文件描述符列表中删除与套接字相关联的文件描述符。5. Peer给我发了一些关于这个套接字的数据。我没有看过那些数据。6.几秒钟后,我再次和与套接字相关联的文件描述符到由select 7监视的文件描述符列表。现在请立即告诉我套接字是可读的吗?如果在第5步中,对等方不给我发送任何数据,而是说,从FIN开始。将select仍然告诉我套接字是可读的,总之,问题是select(或它的任何变体,如epoll)是否表示如果套接字上有任何活动,则该套接字是可读的,然后将套接字包括在监视的文件描述符列表中,并且假设应用程序没有从套接字读取数据。
发布于 2013-08-30 09:43:57
是。
如果在第5步中,对等方不给我发送任何数据,而是说,从FIN开始。还会选择还是告诉我套接字是可读的
是。
总之,问题是select(或其任何变体,如epoll)是否表明,如果套接字上有任何活动,则套接字是可读的,然后将套接字包含在受监视的文件描述符列表中,并假定应用程序没有从套接字读取数据。
是。
在将套接字包含在被监视的文件描述符列表之前,NB‘并不意味着什么。操作系统不知道你是什么时候这么做的。它只知道您用这个列表调用了select()。
https://stackoverflow.com/questions/18527380
复制相似问题