Linux套接字通信常用函數-listen

服務器在調用socket、bind函數之後就會調用listen來監聽這個socket,如果客戶端這時調用connect發出連接請求,服務器端就會接收到這個請求。

無論tcp或者udp都會用到。

int listen(int sockfd,int backlog);
第一個參數就是要監聽的socket描述符,第二個參數爲相應的socket可以排隊的最大連接數,換句話說就是,未經處理的連接請求隊列可以容納的最大數目。socket函數創建的socket默認是一個主動類型,listen函數將socket變爲被動類型,等待客戶的連接請求。

backlog具體是什麼意思呢?每一個連入請求都要進入一個連入請求隊列,等待listen 的程序調用accept()(accept()函數下面有介紹)函數來接受這個連接。當系統還沒有調用accept()函數的時候,如果有很多連接,那麼本地能夠等待的最大數目就是backlog 的數值。你可以將其設成5 到10 之間的數值(推薦)。像上面的所有函數一樣, listen()如果返回 –1 ,那麼說明在listen()的執行過程中發生了錯誤。全局變量errno 中存儲了錯誤代碼。

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