將伺服器select模型設定為非阻塞,處理更多業務

2021-10-04 20:06:33 字數 723 閱讀 3572

如果除了相應客戶端的訊息以外,還要主動的去給客戶端推送一些訊息這樣就有些不方便

server 設定select為阻塞狀態的時候,那麼絕大部分的時間都用在等待客戶端連線上面

如果是做乙個純應答型的網路服務程式那麼這樣就可以足夠的使用

如果除了相應客戶端的訊息以外,還要主動的去給客戶端推送一些訊息這樣就有些不方便

在 while 裡新增了一段話看看效果

為 select 新增 timeval

/*

設定為1 秒,後面的是微妙 ,這是查詢最大的時間限制並

如果select沒有查詢到會立即返回,並不是真的等待這麼久

這樣在等待客戶端連線時,可以處理其他事物,如傳送資料給其他客戶端

------------------------ the end ------------------------------

將伺服器公升級為select模型處理多個客戶端

之前寫的網路模型,都是客戶端和服務端1對1阻塞的網路程式 每次服務端想要接收新的客戶端連線的時候都必須要有乙個客戶端向server傳送連線,才能返回執行下一步 想要recv的時候也必須要客戶端send真正傳送之後才能執行下一步 因為傳送的速度比較快所以感覺不出來,像這樣的程式就必須等到誰執行才能執行...

伺服器IO模型之Select

阻塞與非阻塞 select模型目的 主要是避免在套接字呼叫上阻塞的應用程式有能力管理多個套接字,即是單一執行緒模式下只能處理乙個套接字的問題,這樣可以避免執行緒膨脹。select模型函式 int select in int nfds,inout fd set readfds,inout fd set...

select模型的伺服器原始碼

include stdafx.h include include include pragma comment lib,ws2 32.lib listen port u short nlistenport 5018 initilize the listen socket bool initandli...