直接看呼叫主函式中while迴圈的部分
每次呼叫select都會改變fd_set的值, 所以要兩個變數,allset,以及乙個rset
先看看是否有客戶端請求連線,如果有處理連線。
這裡用新開乙個陣列維護檔案描述符。這樣的好處是如果用動態陣列,可以動態維護檔案描述符。
遍歷整個客戶端的陣列,然後來看看有沒有可以讀的資訊
select函式的缺點是每次要將fd_set拷貝到核心區,是基於輪詢機制的io多路復用。
while (1)
if (i == fd_setsize)
fd_set(connfd, &allset); /* 向監控檔案描述符集合allset新增新的檔案描述符connfd */
if (connfd > maxfd)
maxfd = connfd; /* select第乙個引數需要 */
if (i > maxi)
maxi = i; /* 保證maxi存的總是client最後乙個元素下標 */
if (--nready == 0)
continue;
} for (i = 0; i <= maxi; i++) else if (n > 0)
if (--nready == 0)
break; /* 跳出for, 但還在while中 */}}
}
Linux C select伺服器原始碼剖析
直接看呼叫主函式中while迴圈的部分 每次呼叫select都會改變fd set的值,所以要兩個變數,allset,以及乙個rset 先看看是否有客戶端請求連線,如果有處理連線。這裡用新開乙個陣列維護檔案描述符。這樣的好處是如果用動態陣列,可以動態維護檔案描述符。遍歷整個客戶端的陣列,然後來看看有沒...
伺服器安裝Linux伺服器
新辦公需要搭建一台伺服器,之前也沒有怎麼搞過,不過有一些了解,於是和同事一起嘗試安裝一下伺服器。本人使用ultraiso燒錄u盤,系統檔案是centos 6.6 x86 64 bin 1.ios,使用urtraiso開啟iso檔案,然後如下圖 接著就可以寫入,u盤會被格式化的,注意備份,等待寫入就可...
mysql udp伺服器 UDP伺服器
傳輸層主要應用的協議模型有兩種,一種是tcp協議,另外一種則是udp協議。tcp協議在網路通訊中佔主導地位,絕大多數的網路通訊借助tcp協議完成資料傳輸。但udp也是網路通訊中不可或缺的重要通訊手段。相較於tcp而言,udp通訊的形式更像是發簡訊。不需要在資料傳輸之前建立 維護連線。只專心獲取資料就...