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