listen

c語言函數

listen在套接字函數中表示讓一個套接字處於監聽到來的連接請求的狀態

頭文件


linux:

#include
#include

windows

#include
#include

函數聲明


linux

int listen(int fd, int backlog);

windows

int listen(SOCKET sockfd, int backlog);

功能


listen函數使用主動連接套接字變為被連接套介面,使得一個進程可以接受其它進程的請求,從而成為一個伺服器進程。在TCP伺服器編程中listen函數把進程變為一個伺服器,並指定相應的套接字變為被動連接。
listen函數一般在調用bind之後-調用accept之前調用。

參數


sockfd 一個已綁定未被連接的套接字描述符
backlog 連接請求隊列(queue of pending connections)
的最大長度(一般由2到4)。用SOMAXCONN則由
系統確定。

返回值


無錯誤,返回0,
否則,返回SOCKET ERROR,windows上可以調用函數WSAGetLastError取得錯誤代碼,在Linux可使用errno

說明


(1) 執行listen 之後套接字進入被動模式。
(2) 隊列滿了以後,將拒絕新的連接請求。客戶端將出現連接D 錯誤WSAECONNREFUSED。
(3) 在正在listen的套接字上執行listen不起作用。

例子