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 値の 1 つ。

例外

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

次のコード例では、 を使用 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を使用する場合は、 を閉じる前に常に メソッドをShutdownSocket呼び出します。 これにより、接続されているソケットが閉じられる前にすべてのデータが送受信されます。

Close 関連付けられているすべてのマネージド リソースとアンマネージド リソースを解放するには、 メソッドを呼び出します Socket。 閉じた後に を Socket 再利用しないでください。

次の表は、 パラメーターに SocketShutdown 対して有効な列挙値を how 示しています。

[値] 説明
Send この Socketで送信を無効にします。
受信 この Socketで受信を無効にします。
両方 この Socketで送受信の両方を無効にします。

を に設定 how すると Send 、 への後続の呼び出しが許可されないことが Send 指定されます。 コネクションレス Socketを使用している場合、 を Send 指定しても効果はありません。

を に設定 how すると Receive 、 への後続の呼び出しが許可されないことが Receive 指定されます。 これは、下位のプロトコル レイヤーには影響しません。 接続指向プロトコルを使用している場合、 の呼び出し Shutdown 後に次のいずれかの条件が存在する場合、接続は終了します。

  • データは受信を待機している受信ネットワーク バッファー内にあります。

  • より多くのデータが到着しました。

コネクションレス プロトコルを使用している場合は、データグラムが受け入れられ、キューに入れられます。 ただし、追加の受信データグラムに使用できるバッファー領域がない場合は、破棄され、送信者にエラーは返されません。 コネクションレスSocketで を使用Shutdownすることはお勧めしません。

を に設定 how すると Both 、上記のように送受信の両方が無効になります。

注意

メソッドを呼び出すときに をSocketExceptionShutdown受け取った場合は、 プロパティをSocketException.ErrorCode使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。

Note

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。

適用対象

こちらもご覧ください