Bagikan melalui


Socket.Disconnect(Boolean) Metode

Definisi

Menutup koneksi soket dan memungkinkan penggunaan kembali soket.

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

Parameter

reuseSocket
Boolean

true jika soket ini dapat digunakan kembali setelah koneksi saat ini ditutup; jika tidak, false.

Pengecualian

Objek Socket telah ditutup.

Terjadi kesalahan saat mencoba mengakses soket.

Contoh

Contoh kode berikut membuat soket untuk komunikasi sinkron dan mengirim beberapa data ke host jarak jauh. Kemudian memanggil Shutdown, untuk menghentikan aktivitas kirim dan terima, dan Disconnect, untuk menutup koneksi soket.

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

Keterangan

Jika Anda menggunakan protokol berorientasi koneksi, Anda dapat menggunakan metode ini untuk menutup soket. Metode ini mengakhiri koneksi dan mengatur properti ke Connectedfalse. Namun, jika reuseSocket adalah true, Anda dapat menggunakan kembali soket.

Untuk memastikan bahwa semua data dikirim dan diterima sebelum soket ditutup, Anda harus memanggil Shutdown sebelum memanggil Disconnect metode .

Jika Anda perlu memanggil Disconnect tanpa terlebih dahulu memanggil Shutdown, Anda dapat mengatur DontLingerSocket opsi ke false dan menentukan interval waktu habis bukan nol untuk memastikan bahwa data yang diantrekan untuk transmisi keluar dikirim. Disconnect kemudian memblokir hingga data dikirim atau sampai batas waktu yang ditentukan kedaluwarsa. Jika Anda mengatur DontLinger ke false dan menentukan interval waktu habis nol, Close melepaskan koneksi dan secara otomatis membuang data antrean keluar.

Catatan

Jika Anda menerima SocketException, gunakan SocketException.ErrorCode properti untuk mendapatkan kode kesalahan tertentu. Setelah Anda mendapatkan kode ini, lihat dokumentasi kode kesalahan API Windows Sockets versi 2 untuk deskripsi terperinci tentang kesalahan tersebut.

Catatan

Anggota ini mengeluarkan informasi pelacakan saat Anda mengaktifkan pelacakan jaringan di aplikasi Anda. Untuk informasi selengkapnya, lihat Pelacakan Jaringan di .NET Framework.

Berlaku untuk