EPOLL可以用來查詢網(wǎng)絡(luò)事件(數(shù)據(jù)到達(dá),數(shù)據(jù)發(fā)送,連接建立,連接斷開。。。);但有一點(diǎn)需要注意,EPOLL在查詢接收數(shù)據(jù)的時(shí)候不是針對每個包一個事件的,實(shí)際上其是在連續(xù)到達(dá)的數(shù)據(jù)包時(shí)可能只有一個事件,這取決于應(yīng)用接收數(shù)據(jù)的速度;如果應(yīng)用沒有將到達(dá)的數(shù)據(jù)從協(xié)議層接收完全,新到達(dá)的數(shù)據(jù)就不會就不會觸發(fā)EPOLL事件。
因此,應(yīng)用在接收數(shù)據(jù)的時(shí)候需要不停的調(diào)用recv(socket API)知道得到一個錯誤;只有這樣新的數(shù)據(jù)包到達(dá)的時(shí)候才會重新產(chǎn)生EPOLL事件。