程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Beej’s Guide Network to Programming 系列連載12

Beej’s Guide Network to Programming 系列連載12

編輯:關於C語言

上一篇:http://www.BkJia.com/kf/201112/115475.html


5.5. listen() ---如果有“人”,請叫我?
       是換換內容得時候了。假如你不希望與遠程的一個地址相連,或者說, 僅僅是將它踢開,那你就需要等待接入請求並且用各種方法處理它們。處理過程分兩步:首先,監聽--listen(),然後,你接受--accept()

       函數原型:

int listen(intsockfd, int backlog);

       sockfd 是調用socket() 返回的套接字文件描述符。backlog 是在進入隊列中允許的連接數目。什麼意思呢? 進入的連接是在隊列中一直等待直到你接受 (accept() 請看下面的文章)連接。它們的數目限制於隊列的允許。 大多數系統的允許數目是20,你也可以設置為5到10。

和別的函數一樣,在發生錯誤的時候返回-1,並設置全局錯誤變量 errno。

你可能想象到了,在你調用 listen() 前你或者要調用bind() 或者讓內核隨便選擇一個端口。如果你想偵聽進入的連接,那麼系統調用的順序可能是這樣的:

getaddrinfo();

socket();

bind();

listen();

/* accept() goeshere */

 

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

 

摘自 xiaobin_HLJ80的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved