LPWSPRECVDISCONNECT 回呼函式 (ws2spi.h)
如果通訊端是面向連線, LPWSPRecvDisconnect 函式會終止通訊端上的接收,並擷取中斷連線資料。
語法
LPWSPRECVDISCONNECT Lpwsprecvdisconnect;
int Lpwsprecvdisconnect(
[in] SOCKET s,
[out] LPWSABUF lpInboundDisconnectData,
[out] LPINT lpErrno
)
{...}
參數
[in] s
識別通訊端的描述項。
[out] lpInboundDisconnectData
要複製中斷連線資料的緩衝區指標。
[out] lpErrno
錯誤碼的指標。
傳回值
如果沒有發生錯誤, LPWSPRecvDisconnect 會傳回零。 否則會傳回SOCKET_ERROR的值,並在 lpErrno中提供特定的錯誤碼。
錯誤碼 | 意義 |
---|---|
網路子系統失敗。 | |
參數 lpInboundDisconnectData 所參考的緩衝區太小。 | |
指定的通訊協定系列不支援中斷連線資料。 | |
封鎖 Windows Sockets 呼叫正在進行中,或服務提供者仍在處理回呼函式。 | |
通訊端未 (連線導向通訊端) 。 | |
描述項不是通訊端。 |
備註
LPWSPRecvDisconnect 用於連線導向通訊端,以停用接收,並從遠端合作物件擷取任何連入中斷連線資料。
成功發出此函式之後,不允許通訊端上的後續接收。 這不會影響較低的通訊協定層。 針對 TCP,不會變更 TCP 視窗,而且在視窗耗盡之前,才會接受傳入資料 (,但不會認可) 。 針對 UDP,接受並排入佇列的傳入資料包。 在任何情況下都不會產生 ICMP 錯誤封包。
若要成功接收連入中斷連線資料,Windows Sockets SPI 用戶端必須使用其他機制來判斷線路是否已關閉。 例如,用戶端必須收到FD_CLOSE通知,或取得零傳回值,或來自 LPWSPRecv的WSAEDISCON錯誤碼。
請注意, LPWSPRecvDisconnect 不會關閉通訊端,而且在 叫用 LPWSPCloseSocket 之前,不會釋放附加至通訊端的資源。
注意
不論通訊端上的SO_LINGER設定為何,LPWSPRecvDisconnect都不會封鎖。 Windows Sockets SPI 用戶端不應該依賴在 LPWSPRecvDisconnected 之後重複使用通訊端。 特別是,Windows Sockets 提供者不需要支援在這類通訊端上使用 LPWSPConnect 。
規格需求
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
標頭 | ws2spi.h |