Socket.Disconnect(Boolean) Yöntem

Tanım

Yuva bağlantısını kapatır ve yuvanın yeniden kullanılmasına izin verir.

public:
 void Disconnect(bool reuseSocket);
public void Disconnect (bool reuseSocket);
member this.Disconnect : bool -> unit
Public Sub Disconnect (reuseSocket As Boolean)

Parametreler

reuseSocket
Boolean

true geçerli bağlantı kapatıldıktan sonra bu yuva yeniden kullanılabilirse; aksi takdirde , false.

Özel durumlar

Nesne Socket kapatıldı.

Yuvaya erişmeye çalışılırken bir hata oluştu.

Örnekler

Aşağıdaki kod örneği, zaman uyumlu iletişim için bir yuva oluşturur ve uzak bir konağa bazı veriler gönderir. Ardından gönderme ve alma etkinliğini Disconnectdurdurmak için ve yuva bağlantısını kapatmak için öğesini çağırırShutdown.

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");

Açıklamalar

Bağlantı odaklı bir protokol kullanıyorsanız, yuvayı kapatmak için bu yöntemi kullanabilirsiniz. Bu yöntem bağlantıyı sonlandırır ve özelliğini olarak falseayarlarConnected. Ancak, ise reuseSockettrueyuvayı yeniden kullanabilirsiniz.

Yuva kapatılana kadar tüm verilerin gönderilip alındığından emin olmak için yöntemini çağırmadan Disconnect önce çağrısı Shutdown yapmalısınız.

çağrısı yapmadan çağrısı Disconnect yapmanız gerekiyorsa, giden iletim için kuyruğa alınan verilerin gönderilmesini sağlamak için seçeneğini false olarak ayarlayabilir DontLingerSocket ve sıfır olmayan bir zaman aşımı aralığı belirtebilirsiniz.Shutdown Disconnect ardından veriler gönderilene kadar veya belirtilen zaman aşımı süresi dolana kadar engeller. olarak ayarlayıp DontLingerfalse sıfır zaman aşımı aralığı belirtirseniz, Close bağlantıyı serbest bırakır ve giden kuyruğa alınan verileri otomatik olarak atar.

Not

bir alırsanız, belirli bir SocketExceptionhata kodunu almak için özelliğini kullanın SocketException.ErrorCode . Bu kodu aldıktan sonra, hatanın ayrıntılı açıklaması için Windows Yuvaları sürüm 2 API hata kodu belgelerine bakın.

Not

Uygulamanızda ağ izlemeyi etkinleştirdiğinizde, bu üye izleme bilgilerini çıkarır. Daha fazla bilgi için bkz. .NET Framework'da Ağ İzleme.

Şunlara uygulanır