18 3 5 建立套接字佇列

2021-05-14 13:08:14 字數 561 閱讀 5233

為了能夠在套接字上接受接入的連線,伺服器程式必須建立乙個佇列來儲存到達的請求。建立佇列可使用系統呼叫

listen()

完成,它的一般形式為:

int listen(int socket, int backlog);

linux

系統可能會對佇列裡能夠容納的排隊連線的最大個數有限制。在這個最大值的範圍內,

listen()

將把佇列長度設定為

backlog

個連線。在套接字上排隊的接入連線個數最多不能超過這個數字,再往後的連線將被拒絕,使用者的連線請求將會失敗。這是

listen()

提供的乙個機制,在伺服器程式緊張地處理著上乙個客戶的時候,後來的連線將被放到佇列裡排隊等號。

backlog

常用的值是5。

listen()

函式成功時會返回

0,否則返回

–1,它的錯誤**包括

ebadf

、einval

和enotsock

,含義同

bind()

系統呼叫的錯誤**相同。

18 3 2 建立套接字

套接字是通過標準的 unix 檔案描述符和其他的程式通訊的乙個方法。套接字在使用前必須先被建立,建立套接字的系統呼叫為 socket 它的一般形式是 int socket int domain,int type,int protocol 建立出來的套接字是一條通訊線路的乙個端點,domain 引數負...

4 6 2 建立套接字

當 socket 函式返回 invalid socket 時,呼叫 showerrormsg 函式顯示呼叫失敗的原因。建立套接字程式清單如下。建立 windows socket shost socket af inet,sock stream,ipproto tcp if invalid socke...

建立套接字失敗

if afxsocketinit 執行程式,會發現彈出對話方塊 載入套接字型檔失敗。原因是因為該段 新增的位置不對。必須寫在initinstance函式的開始位置,建立視窗前 考慮到afxsocketinit 函式只能載入1.1版本的套接字型檔,若要載入其他版本的套接字型檔,則需要新增如下 word...