listen() - Unix、Linux 系統呼叫 - 技術教學
Tutorials Point


  Unix 初學者指南
  Unix Shell 程式設計
  高階 Unix
  Unix 有用參考
  Unix 有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  首頁     參考     討論論壇     關於 TP  

listen() - Unix、Linux 系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

listen - 監聽套接字上的連線

語法

#include <sys/socket.h>

int listen(int sockfd, int backlog);

描述

要接受連線,首先使用 socket(2) 建立一個套接字,使用 listen() 指定接受傳入連線的意願和傳入連線的佇列限制,然後使用 accept(2) 接受連線。listen() 呼叫僅適用於型別為 SOCK_STREAMSOCK_SEQPACKET 的套接字。

backlog 引數定義了掛起連線佇列可能增長到的最大長度。如果連線請求到達時佇列已滿,則客戶端可能會收到錯誤,並指示 ECONNREFUSED 或,如果底層協議支援重傳,則請求可能會被忽略,以便重試成功。

註釋

TCP 套接字上 backlog 引數的行為在 Linux 2.2 中發生了變化。現在它指定了等待接受的完全建立的套接字的佇列長度,而不是不完整連線請求的數量。可以使用 tcp_max_syn_backlog sysctl 設定不完整套接字佇列的最大長度。啟用 syncookies 時,沒有邏輯上的最大長度,並且會忽略此 sysctl 設定。有關更多資訊,請參閱 tcp(7)。

返回值

成功時,返回零。發生錯誤時,返回 -1,並且 errno 被適當地設定。

錯誤

標籤描述
EADDRINUSE
 另一個套接字已經在同一埠上偵聽。
EBADF 引數 sockfd 不是有效的描述符。
ENOTSOCK
 引數 sockfd 不是套接字。
EOPNOTSUPP
 套接字的型別不支援 listen() 操作。

符合標準

4.4BSD、POSIX.1-2001。listen() 函式呼叫首次出現在 4.2BSD 中。

錯誤

如果套接字的型別為 AF_INET,並且 backlog 引數大於常量 SOMAXCONN(在 Linux 2.0 和 2.2 中為 128),則會將其靜默截斷為 SOMAXCONN

參見



previous next Printer Friendly

廣告


  

廣告



廣告
© . All rights reserved.