Socket.Shutdown(SocketShutdown) 方法

定義

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

public:
 void Shutdown(System::Net::Sockets::SocketShutdown how);
public void Shutdown (System.Net.Sockets.SocketShutdown how);
member this.Shutdown : System.Net.Sockets.SocketShutdown -> unit
Public Sub Shutdown (how As SocketShutdown)

參數

how
SocketShutdown

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

例外狀況

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

範例

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

try
{
   aSocket->Shutdown(SocketShutdown::Both);
   aSocket->Close();
}
catch (...)
{
   aSocket->Close();
   throw;
}

if ( aSocket->Connected )
{
   Console::WriteLine( "Winsock error: {0}", Convert::ToString(
      System::Runtime::InteropServices::Marshal::GetLastWin32Error() ) );
}
try
{
    aSocket.Shutdown(SocketShutdown.Both);
}
finally
{
    aSocket.Close();
}
    Try
        aSocket.Shutdown(SocketShutdown.Both)
    Finally
        aSocket.Close()
    End Try

End Sub

備註

使用連接導向 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 中的網路追蹤

適用於

另請參閱