Menyelesaikan Masalah Komunikasi Pelayan-Pelanggan: Menyelesaikan Kegagalan Balasan Soket
Dalam percubaan untuk mewujudkan saluran komunikasi antara pelanggan dan pelayan menggunakan soket Java , anda mungkin menghadapi situasi di mana pelayan gagal menjawab permintaan pelanggan. Untuk menangani isu ini, adalah penting untuk memeriksa kod dan mengenal pasti kemungkinan ralat.
Satu kesilapan biasa dalam pengaturcaraan soket Java ialah mengabaikan untuk menamatkan mesej String dengan carriage return ("r") dan suapan talian ("n" ) urutan. Aksara ini menunjukkan penghujung baris dan membantu penerima mentafsir mesej dengan betul.
Sebagai contoh, mari kita periksa kod yang disediakan:
Pelayan:
Gelung dalam pelayan secara berterusan membaca mesej pelanggan, tetapi ia tidak mempunyai sebarang kod untuk menghantar respons. Untuk menghantar balasan, gunakan objek OutputStreamWriter untuk menulis mesej dan siramnya ke strim.
Pelanggan:
Dalam kod klien, selepas menghantar huruf "" end", gelung menunggu tanpa henti untuk respons pelayan. Untuk menyelesaikan masalah ini, sama ada keluarkan gelung tak terhingga atau tambahkan syarat untuk keluar dari gelung sebaik sahaja respons diterima.
Menyelesaikan Isu:
Untuk membetulkan kegagalan komunikasi , anda harus memastikan bahawa kedua-dua pelayan dan pelanggan menamatkan mesej keluar mereka dengan "rn". Ini menandakan penghujung talian dan membenarkan penerima menghuraikan mesej dengan betul.
Berikut ialah versi kod yang dikemas kini:
Pelayan:
// ...code as before... if (string.equals("end")) { out.write("to end" + "\r\n"); out.flush(); out.close(); System.out.println("end"); }
Pelanggan:
// ...code as before... string = "end"; out.write(string + "\r\n"); out.flush(); // ...code as before...
Oleh menggabungkan perubahan ini, anda boleh mewujudkan saluran komunikasi yang betul di mana pelayan bertindak balas kepada permintaan pelanggan dan kedua-dua pihak boleh bertukar-tukar mesej dengan berkesan.
Atas ialah kandungan terperinci Mengapakah pelayan soket Java saya tidak bertindak balas kepada permintaan pelanggan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!