WSASendDisconnect 函式 (winsock2.h)

WSASendDisconnect 函式會起始套接字聯機終止,並傳送中斷聯機數據。

語法

int WSAAPI WSASendDisconnect(
  [in] SOCKET   s,
  [in] LPWSABUF lpOutboundDisconnectData
);

參數

[in] s

識別套接字的描述項。

[in] lpOutboundDisconnectData

連出中斷聯機數據的指標。

傳回值

如果沒有發生錯誤, WSASendDisconnect 會傳回零。 否則,會傳回SOCKET_ERROR的值,並呼叫 WSAGetLastError 來擷取特定的錯誤碼。

錯誤碼 意義
WSANOTINITIALISED
使用這個函式之前,必須先進行成功的 WSAStartup 呼叫。
WSAENETDOWN
網路子系統失敗。
WSAENOPROTOOPT
參數 lpOutboundDisconnectData 不是 NULL,而且服務提供者不支援中斷聯機數據。
WSAEINPROGRESS
封鎖的 Windows Sockets 1.1 呼叫正在進行中,或服務提供者仍在處理回呼函式。
WSAENOTCONN
套接字未 (連線導向套接字) 。
WSAENOTSOCK
描述項不是套接字。
WSAEFAULT
lpOutboundDisconnectData 參數未完全包含在用戶地址空間的有效部分。

備註

WSASendDisconnect 函式用於連線導向套接字上,以停用傳輸,並在有任何情況下起始連線終止以及中斷連線數據的傳輸。 這相當於關機 (SD_SEND) ,不同之處在於 WSASendDisconnect 也允許在支援) 的通訊協定中傳送中斷連線數據 (。

成功發出此函式之後,不允許後續傳送。

如果不是 NULL,lpOutboundDisconnectData 參數會指向緩衝區,其中包含要傳送給遠端合作對象的傳出中斷連線數據,以便使用 WSARecvDisconnect 進行擷取。

注意 Windows 上的 TCP/IP 原生實作不支援中斷聯機數據。 只有具有其 WSAPROTOCOL_INFO結構中 XP1_DISCONNECT_DATA旗標的 Windows 套接字提供者才支援中斷連線數據。 使用 WSAEnumProtocols 函 式來取得所有已安裝提供者 的WSAPROTOCOL_INFO 結構。
 
WSASendDisconnect 函式不會關閉套接字,而且在叫用 closesocket 之前,不會釋放附加至套接字的資源。

不論套接字上的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

另請參閱

Winsock 函式

Winsock 參考

connect

socket