Socket.Disconnect(Boolean) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.