Socket.Shutdown(SocketShutdown) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
暫停 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停用傳送和接收。 |
設定 how
為 Send ,指定不允許後續呼叫 Send 。 如果您使用無 Socket連接 ,則指定 Send 將不會有任何作用。
設定 how
為 Receive ,指定不允許後續呼叫 Receive 。 這不會影響較低的通訊協定層。 如果您使用連接導向通訊協定,如果在呼叫 Shutdown 之後存在下列任一條件,就會終止連線:
數據位於等候接收的傳入網路緩衝區中。
更多數據已抵達。
如果您使用無連線通訊協定,則會接受數據報並排入佇列。 不過,如果沒有緩衝區空間可供其他傳入的數據報使用,則會捨棄它們,而且不會傳回任何錯誤給傳送者。 不建議在 Shutdown 無 Socket 連線上使用 。
設定 how
為 停用 Both 傳送和接收,如上所述。
注意
如果您在呼叫 Shutdown 方法時收到 SocketException ,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。
注意
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。