Socket.Shutdown(SocketShutdown) メソッド

定義

Socket での送受信を無効にします。Disables sends and receives on a 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 つ。One of the SocketShutdown values that specifies the operation that will no longer be allowed.

例外

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

Socket が閉じられました。The Socket has been closed.

次のコード例では、Shutdown を使用して Socketを無効にします。The following code example uses Shutdown to disable the 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を使用する場合は、Socketを閉じる前に常に Shutdown メソッドを呼び出します。When using a connection-oriented Socket, always call the Shutdown method before closing the Socket. これにより、接続されたソケットが閉じられる前に、すべてのデータが送信され、受信されます。This ensures that all data is sent and received on the connected socket before it is closed.

Close メソッドを呼び出して、Socketに関連付けられているすべてのマネージリソースとアンマネージリソースを解放します。Call the Close method to free all managed and unmanaged resources associated with the Socket. 終了後に Socket を再利用しないようにしてください。Do not attempt to reuse the Socket after closing.

次の表は、how パラメーターに対して有効な SocketShutdown 列挙値を示しています。The following table shows the SocketShutdown enumeration values that are valid for the how parameter.

[値]Value 説明Description
送信Send この Socketでの送信を無効にします。Disable sending on this Socket.
ReceiveReceive この Socketでの受信を無効にします。Disable receiving on this Socket.
両方Both この Socketで送信と受信の両方を無効にします。Disable both sending and receiving on this Socket.

howSend に設定すると、後続の Send の呼び出しは許可されません。Setting how to Send specifies that subsequent calls to Send are not allowed. コネクションレス Socketを使用している場合、Send を指定しても効果はありません。If you are using a connectionless Socket, specifying Send will have no effect.

howReceive に設定すると、後続の Receive の呼び出しは許可されません。Setting how to Receive specifies that subsequent calls to Receive are not allowed. これは、下位のプロトコルレイヤーには影響しません。This has no effect on lower protocol layers. 接続指向プロトコルを使用している場合、Shutdown の呼び出しの後、次のいずれかの条件が満たされると接続が終了します。If you are using a connection-oriented protocol, the connection is terminated if either of the following conditions exist after a call to Shutdown :

  • 受信を待機している受信ネットワークバッファーにデータがあります。Data is in the incoming network buffer waiting to be received.

  • さらに多くのデータが到着しました。More data has arrived.

コネクションレスプロトコルを使用している場合は、データグラムが受け入れられ、キューに登録されます。If you are using a connectionless protocol, datagrams are accepted and queued. ただし、追加の受信データグラムに使用できるバッファー領域がない場合は、破棄され、送信側にエラーは返されません。However, if no buffer space is available for additional incoming datagrams, they will be discarded and no error will be returned to the sender. コネクションレス SocketShutdown を使用することは推奨されません。Using Shutdown on a connectionless Socket is not recommended.

howBoth に設定すると、前述のように、送信と受信の両方が無効になります。Setting how to Both disables both sends and receives as described above.

注意

Shutdown メソッドを呼び出すときに SocketException を受け取った場合は、SocketException.ErrorCode プロパティを使用して、特定のエラーコードを取得します。If you receive a SocketException when calling the Shutdown method, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコードのドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

適用対象

こちらもご覧ください