給定客戶端FD列表(例如:98,99,100),同時在FD 99,100上接收數據 選擇取消阻止並讀取FD包含FD:99和FD:100c-select()標識第一個未阻止的fd選擇讀取/ recv操作
如何確定,哪個數據是第一個FD在哪?
如果我連續檢查我的數組中是否有客戶端FD的列表,它將總是嘗試在FD上執行套接字讀取:99.但是,我的應用程序必須從FD:100讀取數據, FD先。
FD_ZERO(&readfds);
FD_SET(98, &readfds);
FD_SET(99, &readfds);
FD_SET(100, &readfds);
gMaxfd=100;
rc = select(gMaxfd+1, &readfds, NULL, NULL, NULL);
if(rc>0){
/* Handle the fds for read operation */
/* Here how to identify which is the first FD on which recv has to be called first ???*/
}
您是否考慮使用[poll(2)](http://man7.org/linux/man-pages/man2/poll.2.html),它比'select'(google for * C10K問題* );爲什麼你關心哪個fd有最舊的數據? – 2014-09-24 11:50:44
你應該解釋更多關於你的應用程序在做什麼,以及你想要什麼樣的應用程序級協議(什麼樣的消息和交換)。 – 2014-09-28 12:05:02