WSASendDisconnect 函式 (winsock2.h)
WSASendDisconnect 函式會起始套接字聯機終止,並傳送中斷聯機數據。
語法
int WSAAPI WSASendDisconnect(
[in] SOCKET s,
[in] LPWSABUF lpOutboundDisconnectData
);
參數
[in] s
識別套接字的描述項。
[in] lpOutboundDisconnectData
連出中斷聯機數據的指標。
傳回值
如果沒有發生錯誤, WSASendDisconnect 會傳回零。 否則,會傳回SOCKET_ERROR的值,並呼叫 WSAGetLastError 來擷取特定的錯誤碼。
錯誤碼 | 意義 |
---|---|
使用這個函式之前,必須先進行成功的 WSAStartup 呼叫。 | |
網路子系統失敗。 | |
參數 lpOutboundDisconnectData 不是 NULL,而且服務提供者不支援中斷聯機數據。 | |
封鎖的 Windows Sockets 1.1 呼叫正在進行中,或服務提供者仍在處理回呼函式。 | |
套接字未 (連線導向套接字) 。 | |
描述項不是套接字。 | |
lpOutboundDisconnectData 參數未完全包含在用戶地址空間的有效部分。 |
備註
WSASendDisconnect 函式用於連線導向套接字上,以停用傳輸,並在有任何情況下起始連線終止以及中斷連線數據的傳輸。 這相當於關機 (SD_SEND) ,不同之處在於 WSASendDisconnect 也允許在支援) 的通訊協定中傳送中斷連線數據 (。
成功發出此函式之後,不允許後續傳送。
如果不是 NULL,lpOutboundDisconnectData 參數會指向緩衝區,其中包含要傳送給遠端合作對象的傳出中斷連線數據,以便使用 WSARecvDisconnect 進行擷取。
注意 Windows 上的 TCP/IP 原生實作不支援中斷聯機數據。 只有具有其 WSAPROTOCOL_INFO結構中 XP1_DISCONNECT_DATA旗標的 Windows 套接字提供者才支援中斷連線數據。 使用 WSAEnumProtocols 函 式來取得所有已安裝提供者 的WSAPROTOCOL_INFO 結構。
不論套接字上的SO_LINGER設定為何, WSASendDisconnect 函式都不會封鎖。
應用程式不應該依賴在呼叫 WSASendDisconnect 之後重複使用套接字。 特別是,Windows Sockets 提供者不需要支援/在這類套接字上使用WSAConnect。
注意 發出封鎖的 Winsock 呼叫,例如 WSASendDisconnect 時,Winsock 可能需要等候網路事件,才能完成呼叫。 在此情況下,Winsock 會執行可警示的等候,而異步過程調用 (APC) 排程在相同線程上可能會中斷。 在 APC 內發出另一個封鎖 Winsock 呼叫,中斷相同線程上持續封鎖 Winsock 呼叫會導致未定義的行為,而且永遠不會由 Winsock 客戶端嘗試。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | winsock2.h |
程式庫 | Ws2_32.lib |
Dll | Ws2_32.dll |