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中提供特定的錯誤碼。

錯誤碼 意義
WSAENETDOWN
網路子系統失敗。
WSAEFAULT
參數 lpInboundDisconnectData 所參考的緩衝區太小。
WSAENOPROTOOPT
指定的通訊協定系列不支援中斷連線資料。
WSAEINPROGRESS
封鎖 Windows Sockets 呼叫正在進行中,或服務提供者仍在處理回呼函式。
WSAENOTCONN
通訊端未 (連線導向通訊端) 。
WSAENOTSOCK
描述項不是通訊端。

備註

LPWSPRecvDisconnect 用於連線導向通訊端,以停用接收,並從遠端合作物件擷取任何連入中斷連線資料。

成功發出此函式之後,不允許通訊端上的後續接收。 這不會影響較低的通訊協定層。 針對 TCP,不會變更 TCP 視窗,而且在視窗耗盡之前,才會接受傳入資料 (,但不會認可) 。 針對 UDP,接受並排入佇列的傳入資料包。 在任何情況下都不會產生 ICMP 錯誤封包。

若要成功接收連入中斷連線資料,Windows Sockets SPI 用戶端必須使用其他機制來判斷線路是否已關閉。 例如,用戶端必須收到FD_CLOSE通知,或取得零傳回值,或來自 LPWSPRecvWSAEDISCON錯誤碼。

請注意, LPWSPRecvDisconnect 不會關閉通訊端,而且在 叫用 LPWSPCloseSocket 之前,不會釋放附加至通訊端的資源。

注意

不論通訊端上的SO_LINGER設定為何,LPWSPRecvDisconnect都不會封鎖。 Windows Sockets SPI 用戶端不應該依賴在 LPWSPRecvDisconnected 之後重複使用通訊端。 特別是,Windows Sockets 提供者不需要支援在這類通訊端上使用 LPWSPConnect

規格需求

   
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
標頭 ws2spi.h

另請參閱

LPWSPConnect

LPWSPSocket