Socket.Disconnect(Boolean) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ソケット接続を閉じ、ソケットを再利用できるようにします。
public:
void Disconnect(bool reuseSocket);
public void Disconnect (bool reuseSocket);
member this.Disconnect : bool -> unit
Public Sub Disconnect (reuseSocket As Boolean)
パラメーター
- reuseSocket
- Boolean
現在の接続の終了後、このソケットが再利用できる場合は true
。それ以外の場合は false
。
例外
Socket オブジェクトは閉じられています。
ソケットへのアクセスを試行しているときにエラーが発生しました。
例
次のコード例では、同期通信用のソケットを作成し、いくつかのデータをリモート ホストに送信します。 次に、 を呼び出 Shutdownして送受信アクティビティを停止し Disconnect、ソケット接続を閉じます。
IPHostEntry^ ipHost = Dns::GetHostEntry( Dns::GetHostName() );
IPAddress^ ipAddr = ipHost->AddressList[ 0 ];
IPEndPoint^ ipEndPoint = gcnew IPEndPoint( ipAddr,11000 );
Socket^ client = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
// Connect the socket to the remote end point.
client->Connect( ipEndPoint );
// Send some data to the remote device.
String^ data = "This is a string of data <EOF>";
array<Byte>^buffer = Encoding::ASCII->GetBytes( data );
int bytesTransferred = client->Send( buffer );
// Write to the console the number of bytes transferred.
Console::WriteLine( "{0} bytes were sent.\n", bytesTransferred );
// Release the socket.
client->Shutdown( SocketShutdown::Both );
client->Disconnect( true );
if ( client->Connected )
Console::WriteLine( "We're still connnected" );
else
Console::WriteLine( "We're disconnected" );
IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
IPAddress ipAddr = ipHost.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);
Socket client = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
// Connect the socket to the remote end point.
client.Connect(ipEndPoint);
// Send some data to the remote device.
string data = "This is a string of data <EOF>";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int bytesTransferred = client.Send(buffer);
// Write to the console the number of bytes transferred.
Console.WriteLine("{0} bytes were sent.\n", bytesTransferred);
// Release the socket.
client.Shutdown(SocketShutdown.Both);
client.Disconnect(true);
if (client.Connected)
Console.WriteLine("We're still connnected");
else
Console.WriteLine("We're disconnected");
注釈
接続指向プロトコルを使用している場合は、このメソッドを使用してソケットを閉じます。 このメソッドは、接続を終了し、 プロパティを Connected に false
設定します。 ただし、 が の場合 reuseSocket
は true
、ソケットを再利用できます。
ソケットを閉じる前にすべてのデータが確実に送受信されるようにするには、 メソッドを呼び出す前に を呼び Shutdown 出す Disconnect 必要があります。
を最初に呼び出さずに を呼び出すDisconnectShutdown必要がある場合は、 オプションを DontLingerSocket にfalse
設定し、0 以外のタイムアウト間隔を指定して、送信送信用にキューに入れたデータが確実に送信されるようにすることができます。
Disconnect 次に、データが送信されるまで、または指定されたタイムアウトが切れるまでブロックします。 を にfalse
設定DontLingerし、タイムアウト間隔を 0 に指定した場合は、接続を解放し、Close送信キューに入ったデータを自動的に破棄します。
注意
を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。
Note
このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。
適用対象
.NET