網絡監聽函數listen()

listen()函數 
  是換換內容得時候了。假如你不希望與遠程的一個地址相連,或者說, 僅僅是將它踢開,那你就需要等待接入請求並且用各種方法處理它們。處 理過程分兩步:首先,你聽--listen(),然後,你接受--accept() (請看下面的 內容)。 
除了要一點解釋外,系統調用 listen 也相當簡單。 
int listen(int sockfd, int backlog);  
sockfd 是調用 socket() 返回的套接字文件描述符。backlog 是在進入 隊列中允許的連接數目。什麼意思呢? 進入的連接是在隊列中一直等待直 到你接受 (accept() 請看下面的文章)連接。它們的數目限制於隊列的允許。 大多數系統的允許數目是20,你也可以設置爲5到10。 
和別的函數一樣,在發生錯誤的時候返回-1,並設置全局錯誤變量 errno。 
你可能想象到了,在你調用 listen() 前你或者要調用 bind() 或者讓內 核隨便選擇一個端口。如果你想偵聽進入的連接,那麼系統調用的順序可 能是這樣的:  
socket();  
  bind();  
listen();  
  /* accept() 應該在這 */  

因爲它相當的明瞭,我將在這裏不給出例子了。(在 accept() 那一章的 代碼將更加完全。)真正麻煩的部分在 accept()。

一般backlog越大,服務器能夠處理的瞬間連上來的客戶端的數目越多。越能更好的處理突發大量連接


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章