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

listen

(c語言函數)

鎖定
listen在套接字函數中表示讓一個套接字處於監聽到來的連接請求的狀態
中文名
listen
類    別
C語言函數
頭文件
<sys/listen.h> 或<winsock.h>
函數聲明
int listen(SOCKET sockfd,int backlog)

listen頭文件

linux:<sys/listen.h>
windows:<sys/listen.h>或<winsock.h>(VC頭文件)

listen函數聲明

linux
int listen(int fd, int backlog);
windows
int listen(SOCKET sockfd, int backlog);

listen功能

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

listen參數

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

listen返回值

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

listen説明

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

listen例子

if(listen(sock,5) == -1) {
    printf("error listening on socket\n");
}