Socket.LingerState Properti
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.
Mendapatkan atau menetapkan nilai yang menentukan apakah Socket akan menunda penutupan soket dalam upaya untuk mengirim semua data yang tertunda.
public:
property System::Net::Sockets::LingerOption ^ LingerState { System::Net::Sockets::LingerOption ^ get(); void set(System::Net::Sockets::LingerOption ^ value); };
public System.Net.Sockets.LingerOption? LingerState { get; set; }
public System.Net.Sockets.LingerOption LingerState { get; set; }
member this.LingerState : System.Net.Sockets.LingerOption with get, set
Public Property LingerState As LingerOption
Nilai Properti
LingerOption Yang menentukan cara berlama-lama saat menutup soket.
Pengecualian
Terjadi kesalahan saat mencoba mengakses soket.
Sudah Socket ditutup.
Contoh
Contoh kode berikut menunjukkan penggunaan LingerState properti.
static void ConfigureTcpSocket(Socket tcpSocket)
{
// Don't allow another socket to bind to this port.
tcpSocket.ExclusiveAddressUse = true;
// The socket will linger for 10 seconds after
// Socket.Close is called.
tcpSocket.LingerState = new LingerOption (true, 10);
// Disable the Nagle Algorithm for this tcp socket.
tcpSocket.NoDelay = true;
// Set the receive buffer size to 8k
tcpSocket.ReceiveBufferSize = 8192;
// Set the timeout for synchronous receive methods to
// 1 second (1000 milliseconds.)
tcpSocket.ReceiveTimeout = 1000;
// Set the send buffer size to 8k.
tcpSocket.SendBufferSize = 8192;
// Set the timeout for synchronous send methods
// to 1 second (1000 milliseconds.)
tcpSocket.SendTimeout = 1000;
// Set the Time To Live (TTL) to 42 router hops.
tcpSocket.Ttl = 42;
Console.WriteLine("Tcp Socket configured:");
Console.WriteLine($" ExclusiveAddressUse {tcpSocket.ExclusiveAddressUse}");
Console.WriteLine($" LingerState {tcpSocket.LingerState.Enabled}, {tcpSocket.LingerState.LingerTime}");
Console.WriteLine($" NoDelay {tcpSocket.NoDelay}");
Console.WriteLine($" ReceiveBufferSize {tcpSocket.ReceiveBufferSize}");
Console.WriteLine($" ReceiveTimeout {tcpSocket.ReceiveTimeout}");
Console.WriteLine($" SendBufferSize {tcpSocket.SendBufferSize}");
Console.WriteLine($" SendTimeout {tcpSocket.SendTimeout}");
Console.WriteLine($" Ttl {tcpSocket.Ttl}");
Console.WriteLine($" IsBound {tcpSocket.IsBound}");
Console.WriteLine("");
}
Keterangan
Properti LingerState mengubah perilaku Close metode. Properti ini ketika diatur memodifikasi kondisi di mana koneksi dapat direset oleh Winsock. Reset koneksi masih dapat terjadi berdasarkan perilaku protokol IP.
Properti ini mengontrol lamanya waktu koneksi berorientasi koneksi akan tetap terbuka setelah panggilan ke Close ketika data tetap dikirim.
Saat Anda memanggil metode untuk mengirim data ke serekan, data ini ditempatkan di buffer jaringan keluar. Properti ini dapat digunakan untuk memastikan bahwa data ini dikirim ke host jarak jauh sebelum Close metode menjatuhkan koneksi.
Untuk mengaktifkan berlama-lama, buat instans yang berisi nilai yang LingerOption diinginkan, dan atur LingerState properti ke instans ini.
Tabel berikut menjelaskan perilaku Close metode untuk kemungkinan nilai Enabled properti dan properti yang LingerTime disimpan dalam LingerState properti .
| LingerState.Enabled | LingerState.LingerTime | Perilaku |
|---|---|---|
false (dinonaktifkan), nilai default |
Waktu habis tidak berlaku, (default). | Upaya untuk mengirim data yang tertunda hingga waktu habis protokol IP default kedaluwarsa. |
true (diaktifkan) |
Batas waktu nonzero | Mencoba mengirim data yang tertunda hingga waktu habis yang ditentukan kedaluwarsa, dan jika upaya gagal, maka Winsock mengatur ulang koneksi. |
true (diaktifkan) |
Batas waktu nol. | Membuang data yang tertunda. Untuk soket berorientasi koneksi (TCP, misalnya), Winsock mengatur ulang koneksi. |
Tumpukan IP menghitung periode waktu habis protokol IP default untuk digunakan berdasarkan waktu pulang pergi koneksi. Dalam kebanyakan kasus, waktu habis yang dihitung oleh tumpukan lebih relevan daripada yang ditentukan oleh aplikasi. Ini adalah perilaku default untuk soket ketika LingerState properti tidak diatur.
Ketika properti yang LingerTime disimpan dalam LingerState properti diatur lebih besar dari batas waktu protokol IP default, batas waktu protokol IP default masih akan berlaku dan diambil alih.