Bagikan melalui


opsi soket SO_KEEPALIVE

Opsi soket SO_KEEPALIVE dirancang untuk memungkinkan aplikasi mengaktifkan paket tetap aktif untuk koneksi soket.

Untuk mengkueri status opsi soket ini, panggil fungsi getsockopt . Untuk mengatur opsi ini, panggil fungsi setsockopt dengan parameter berikut.

Nilai opsi soket

Konstanta yang mewakili opsi soket ini adalah 0x0008.

Sintaks

int setsockopt(
  (SOCKET) s,      // descriptor identifying a socket 
  (int) SOL_SOCKET,   // level
  (int) SO_KEEPALIVE, // optname
  (char *) optval, // input buffer,
  (int) optlen  // size of input buffer
);

Parameter

s [in]

Deskriptor yang mengidentifikasi soket.

level [in]

Tingkat di mana opsi didefinisikan. Gunakan SOL_SOCKET untuk operasi ini.

optname [in]

Opsi soket yang nilainya akan diatur. Gunakan SO_KEEPALIVE untuk operasi ini.

optval [out]

Penunjuk ke buffer yang berisi nilai untuk opsi yang akan diatur. Parameter ini harus menunjuk ke buffer yang sama dengan atau lebih besar dari ukuran nilai DWORD .

Nilai ini diperlakukan sebagai nilai boolean dengan 0 digunakan untuk menunjukkan FALSE (dinonaktifkan) dan nilai bukan nol untuk menunjukkan TRUE (diaktifkan).

optlen [in]

Ukuran, dalam byte, dari buffer optval . Ukuran ini harus sama dengan atau lebih besar dari ukuran nilai DWORD .

Nilai kembali

Jika operasi berhasil diselesaikan, setsockopt mengembalikan nol.

Jika operasi gagal, nilai SOCKET_ERROR dikembalikan dan kode kesalahan tertentu dapat diambil dengan memanggil WSAGetLastError.

Kode kesalahan Makna
WSANOTINITIALISED
Panggilan WSAStartup yang berhasil harus terjadi sebelum menggunakan fungsi ini.
WSAENETDOWN
Subsistem jaringan gagal.
WSAEFAULT
Salah satu optval atau parameter optlen menunjuk ke memori yang tidak berada di bagian ruang alamat pengguna yang valid. Kesalahan ini juga dikembalikan jika nilai yang diacu oleh parameter optlen kurang dari ukuran nilai DWORD .
WSAEINPROGRESS
Panggilan Windows Sockets 1.1 yang diblokir sedang berlangsung, atau penyedia layanan masih memproses fungsi panggilan balik.
WSAEINVAL
Parameter tingkat tidak diketahui atau tidak valid. Pada Windows Vista dan yang lebih baru, kesalahan ini juga dikembalikan jika soket dalam keadaan transisi.
WSAENOPROTOOPT
Opsi ini tidak diketahui atau tidak didukung oleh keluarga protokol yang ditunjukkan. Kesalahan ini dikembalikan jika deskriptor soket yang diteruskan dalam parameter s adalah untuk soket datagram.
WSAENOTSOCK
Deskriptor bukan soket.

 

Keterangan

Fungsi getsockopt yang dipanggil dengan opsi soket SO_KEEPALIVE memungkinkan aplikasi untuk mengambil status opsi keepalive saat ini, meskipun fitur ini biasanya tidak digunakan. Jika aplikasi perlu mengaktifkan paket keepalive pada soket, aplikasi hanya memanggil fungsi setsockopt untuk mengaktifkan opsi .

Fungsi setsockopt yang dipanggil dengan opsi soket SO_KEEPALIVE memungkinkan aplikasi mengaktifkan paket tetap hidup untuk koneksi soket. Opsi SO_KEEPALIVE untuk soket dinonaktifkan (diatur ke FALSE) secara default.

Ketika opsi soket ini diaktifkan, tumpukan TCP mengirimkan paket tetap aktif ketika tidak ada data atau paket pengakuan yang diterima untuk koneksi dalam interval. Untuk informasi selengkapnya tentang opsi tetap hidup, lihat bagian 4.2.3.6 tentang Persyaratan untuk Host Internet—Lapisan Komunikasi yang ditentukan dalam RFC 1122 tersedia di situs web IETF. (Sumber daya ini mungkin hanya tersedia dalam bahasa Inggris.)

Opsi soket SO_KEEPALIVE hanya valid untuk protokol yang mendukung gagasan tetap hidup (protokol berorientasi koneksi). Untuk TCP, batas waktu tetap hidup default adalah 2 jam dan interval tetap hidup adalah 1 detik. Jumlah default pemeriksaan tetap hidup bervariasi berdasarkan versi Windows.

Kode kontrol SIO_KEEPALIVE_VALS dapat digunakan untuk mengaktifkan atau menonaktifkan tetap hidup, dan menyesuaikan batas waktu dan interval, untuk satu koneksi. Jika tetap hidup diaktifkan dengan SO_KEEPALIVE, maka pengaturan TCP default digunakan untuk batas waktu dan interval tetap hidup kecuali nilai-nilai ini telah diubah menggunakan SIO_KEEPALIVE_VALS.

Nilai default di seluruh sistem dari batas waktu keep-alive dapat dikontrol melalui pengaturan registri KeepAliveTime yang mengambil nilai dalam milidetik. Nilai seluruh sistem default dari interval keep-alive dapat dikontrol melalui pengaturan registri KeepAliveInterval yang mengambil nilai dalam milidetik.

Pada Windows Vista dan yang lebih baru, jumlah pemeriksaan tetap hidup (transmisi ulang data) diatur ke 10 dan tidak dapat diubah.

Pada Windows Server 2003, Windows XP, dan Windows 2000, pengaturan default untuk jumlah pemeriksaan tetap aktif adalah 5. Jumlah pemeriksaan tetap hidup dapat dikontrol melalui pengaturan registri TcpMaxDataRetransmissions dan PPTPTcpMaxDataRetransmissions . Jumlah pemeriksaan tetap hidup diatur ke yang lebih besar dari dua nilai kunci registri. Jika angka ini adalah 0, maka pemeriksaan tetap hidup tidak akan dikirim. Jika angka ini di atas 255, maka angka ini disesuaikan menjadi 255.

Pada Windows Vista dan yang lebih baru, opsi soket SO_KEEPALIVE hanya dapat diatur menggunakan fungsi setsockopt ketika soket dalam keadaan terkenal bukan status transisi. Untuk TCP, opsi soket SO_KEEPALIVE harus diatur baik sebelum fungsi sambungkan (sambungkan, ConnectEx, WSAConnect, WSAConnectByList, atau WSAConnectByName) dipanggil, atau setelah permintaan koneksi benar-benar selesai. Jika fungsi sambungkan dipanggil secara asinkron, maka ini mengharuskan menunggu penyelesaian koneksi sebelum mencoba mengatur opsi soket SO_KEEPALIVE . Jika aplikasi mencoba mengatur opsi soket SO_KEEPALIVE saat permintaan koneksi masih dalam proses, fungsi setsockopt akan gagal dan mengembalikan WSAEINVAL.

Pada Windows Server 2003, Windows XP, dan Windows 2000, opsi soket SO_KEEPALIVE dapat diatur menggunakan fungsi setsockopt ketika soket adalah status transisi (permintaan koneksi masih berlangsung) serta status terkenal.

Perhatikan bahwa file header Ws2def.h secara otomatis disertakan dalam Winsock2.h, dan tidak boleh digunakan secara langsung.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung
Windows 2000 Server [hanya aplikasi desktop]
Header
Ws2def.h (termasuk Winsock2.h)

Lihat juga

getsockopt

setsockopt

KeepAliveTime

KeepAliveInterval

PPTPTcpMaxDataRetransmissions

soket

SIO_KEEPALIVE_VALS

TcpMaxDataRetransmissions

WSAGetLastError