Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Mengesan Penutupan Soket Jauh di Java dengan Amanah?

Bagaimanakah Saya Boleh Mengesan Penutupan Soket Jauh di Java dengan Amanah?

DDD
Lepaskan: 2024-12-26 00:57:10
asal
554 orang telah melayarinya

How Can I Reliably Detect a Remote Socket Closure in Java?

Menentukan Penutupan Sambungan dengan Java Socket API

Apabila bekerja dengan API soket Java, ia boleh menjadi mencabar untuk mengesan apabila sambungan telah terputus . Tidak seperti kaedah seperti isConnected() dan isClosed(), yang hanya menunjukkan keadaan soket setempat, tiada API terbina dalam untuk menentukan status soket jauh.

Untuk menangani had ini, pendekatan yang disyorkan melibatkan pemantauan Operasi I/O. Jika read() mengembalikan -1, readLine() mengembalikan null atau readXXX() membuang EOFException, kemungkinan rakan sebaya telah menutup sambungan dengan baik.

Dalam kes sambungan telah ditamatkan secara tiba-tiba, cuba untuk write boleh mengakibatkan IOException, menunjukkan "set semula sambungan oleh rakan sebaya." Operasi membaca juga mungkin gagal dengan pengecualian yang serupa.

Sebagai alternatif, tamat masa baca boleh digunakan untuk mengesan apabila rakan setara kekal bersambung tetapi tidak aktif.

Perlu ambil perhatian bahawa ClosedChannelException dan SocketException: soket ditutup tidak menandakan sambungan tertutup sebaliknya cubaan untuk menggunakan saluran selepas ia ditutup secara setempat.

Dalam senario tertentu dengan Java 7 pada Windows XP, memantau kesahihan SelectionKey boleh mendedahkan tetapan semula sambungan. Walau bagaimanapun, tingkah laku ini tidak dijamin merentas platform atau versi JRE yang berbeza.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Penutupan Soket Jauh di Java dengan Amanah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan