Socket.Shutdown(SocketShutdown) 方法

定義

暫停 Socket 上的傳送和接收作業。

C#
public void Shutdown(System.Net.Sockets.SocketShutdown how);

參數

how
SocketShutdown

其中一個 SocketShutdown 值,指定將不再允許的作業。

例外狀況

嘗試存取通訊端時發生錯誤。

範例

下列程式代碼範例會使用 Shutdown 來停用 Socket

C#
try
{
    aSocket.Shutdown(SocketShutdown.Both);
}
finally
{
    aSocket.Close();
}

備註

使用連接導向 Socket時,請一律先呼叫 Shutdown 方法, Socket再關閉 。 這可確保所有數據在關閉之前,都會在連線的套接字上傳送和接收。

Close呼叫 方法以釋放與 Socket相關聯的所有Managed和 Unmanaged 資源。 請勿嘗試在關閉之後重複使用 Socket

下表顯示 SocketShutdown 參數有效的 how 列舉值。

描述
傳送 停用在此 Socket上傳送。
接收 停用這個 Socket上的接收。
兩者 在此上 Socket停用傳送和接收。

設定 howSend ,指定不允許後續呼叫 Send 。 如果您使用無 Socket連接 ,則指定 Send 將不會有任何作用。

設定 howReceive ,指定不允許後續呼叫 Receive 。 這不會影響較低的通訊協定層。 如果您使用連接導向通訊協定,如果在呼叫 Shutdown 之後存在下列任一條件,就會終止連線:

  • 數據位於等候接收的傳入網路緩衝區中。

  • 更多數據已抵達。

如果您使用無連線通訊協定,則會接受數據報並排入佇列。 不過,如果沒有緩衝區空間可供其他傳入的數據報使用,則會捨棄它們,而且不會傳回任何錯誤給傳送者。 不建議在 ShutdownSocket 連線上使用 。

設定 how 為 停用 Both 傳送和接收,如上所述。

備註

如果您在呼叫 Shutdown 方法時收到 SocketException ,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。

備註

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

適用於

產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

另請參閱