WSAAccept()

簡述:

根據條件函式返回值有條件地接受連線,同時(可選地)創建和/或加入一個套接口組
SOCKET WSAAPI WSAAccept ( SOCKET s, struct
sockaddr FAR * addr, int FAR * addrlen,
LPCONDITIONPROC lpfnCondition, DWORD
dwCallbackData );
s:標識一個套接口的描述字,該套接口在listen()後監聽連線
addr:(可選)指針,指向存放通訊層所知的連線實體地址的緩衝區。addr參數的具體格式由套接口創建時產生的地址族決定。
addrlen:(可選)指針,指向存放addr地址長度的整形數。
lpfnCondition:(可選的)用戶提供的條件函式的進程實例地址。該函式根據參數傳入的調用者信息作出接受或拒絕的決定,並通過給結果參數賦予特定的值來(可選地)創建和/或加入一個套接口組
dwCallbackData:作為條件函式參數返回給應用程式的回調數據。WinSock不分析該參數。

返回值:

若無錯誤發生,WSAAccept()函式返回所接受套接口的描述字。否則的話,將返回INVALID_SOCKET錯誤,應用程式可通過WSAGetLastError()來獲取相應的錯誤代碼。
addrlen參數引用的整形數初始時包含了addr參數所指向的空間數,在調用返回時包含了返回地址的實際長度。

錯誤代碼:

WSANOTINITIALISED 在調用本API之前應成功調用WSAStartup()。
WSAECONNREFUSED 根據條件函式的返回值(CF_REJECT)強制拒絕連線請求。
WSAENETDOWN 網路子系統失效。
WSAEFAULT addrlen參數太小(小於sockaddr結構的大小),或者lpfnCondition並不是用戶空間的一部分。
WSAEINTR 通過WSACancelBlockingCall()函式取消(阻塞)調用。
WSAEINPROGRESS 一個阻塞WinSock調用正在進行。
WSAEINVAL WSAAccept()調用前未執行listen()調用;條件函式中的g參數非法;條件函式的返回值非法;套接口處於非法狀態。
WSAEMFILE WSAAccept()調用時排隊佇列非空,且無可用套接口描述字。
WSAENOBUFS 無可用緩衝區空間。
WSAENOTSOCK 描述字不是一個套接口。
WSAEOPNOTSUPP 所引用的套接口不是支持面向連線服務類型的。
WSATRY_AGAIN 根據條件函式的返回值(CF_DEFER) ,連線請求被推遲。
WSAEWOULDBLOCK 套接口標誌為非阻塞,無連線請求供接受。
WSAEACCES 被推遲的連線請求逾時或撤銷。
另請參閱:accept(), bind(), connect(), GETSOCKOPT(),listen(), select(), socket(), SAAsyncSelect(), WSAConnect().

相關詞條

相關搜尋

熱門詞條

聯絡我們