複製鏈接
請複製以下鏈接發送給好友

listen()

鎖定
創建一個套接口並監聽申請的連接.
.#include
int listen( int sockfd, int backlog);
sockfd:用於標識一個已捆綁未連接套接口的描述字。
backlog:等待連接隊列的最大長度。
中文名
listen函數
外文名
listen()
簡    述
創建一個套接口並監聽申請的連接
註    釋
為了接受連接
兼容性
後備日誌當前被限制為5

listen()註釋

為了接受連接,先用socket()創建一個套接口的描述字,然後用listen()創建套接口併為申請進入的連接建立一個後備日誌,然後便可用accept()接受連接了。listen()僅適用於支持連接的套接口,如SOCK_STREAM類型的。套接口s處於一種“變動”模式,申請進入的連接請求被確認,並排隊等待被接受。這個函數特別適用於同時有多個連接請求的服務器;如果當一個連接請求到來時,隊列已滿,那麼客户將收到一個WSAECONNREFUSED錯誤。
當沒有可用的描述字時,listen()函數仍試圖正常地工作。它仍接受請求直至隊列變空。當有可用描述字時,後續的一次listen()或accept()調用會將隊列按照當前或最近的“後備日誌”重新填充,如有可能的話,將恢復監聽申請進入的連接請求。

listen()兼容性

後備日誌當前被(默認地)限制為5。如同4.3 BSD Unix中的一樣,小於1或大於5的數都會被舍入最近的有效值。

listen()返回值

如無錯誤發生,listen()返回0。否則的話,返回-1,應用程序可通過WSAGetLastError()獲取相應錯誤代碼

listen()錯誤代碼

WSANOTINITIALISED:在使用此API之前應首先成功地調用WSAStartup()。
WSAENETDOWN:套接口實現檢測到網絡子系統失效。
WSAEADDRINUSE:試圖用listen()去監聽一個正在使用中的地址。
WSAEINPROGRESS:一個阻塞的套接口調用正在運行中。
WSAEINVAL:該套接口未用bind()進行捆綁,或已被連接。
WSAEISCONN:套接口已被連接。
WSAEMFILE:無可用文件描述字。
WSAENOBUFS:無可用緩衝區空間。
WSAENOTSOCK:描述字不是一個套接口
WSAEOPNOTSUPP:該套接口不正常listen()調用。
參見:
accept(), connect(), socket().