Socket.Disconnect(Boolean) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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 false
ayarlarConnected. Ancak, ise reuseSocket
true
yuvayı 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.