Pelayan Gagal Membalas Pelanggan dalam Komunikasi Soket Java
Di Java, apabila cuba mewujudkan komunikasi soket antara pelanggan dan pelayan, ia adalah mungkin menghadapi situasi di mana pelayan gagal bertindak balas kepada klien. Ini mungkin disebabkan oleh beberapa sebab, yang akan kami terokai dalam artikel ini.
Komunikasi Soket Pelayan-Pelanggan
Untuk memulakan komunikasi, pelayan biasanya mencipta ServerSocket dan mendengar sambungan masuk pada port tertentu. Setelah pelanggan menyambung, pelayan mencipta objek Soket untuk mewujudkan sambungan. Pelanggan juga mencipta objek Socket untuk mewujudkan sambungan dengan pelayan.
Kod Pelayan
public class Server { public static void main(String[] args) throws IOException { ServerSocket ss = null; Socket s = null; try { // Create a server socket and listen on port 34000 ss = new ServerSocket(34000); // Accept an incoming connection from a client s = ss.accept(); // Create input and output streams for communication BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); OutputStreamWriter out = new OutputStreamWriter(s.getOutputStream()); // Continuously read messages from the client while (true) { String string = in.readLine(); if (string != null) { System.out.println("br: " + string); // Respond to the "end" message from the client if (string.equals("end")) { out.write("to end"); out.flush(); out.close(); System.out.println("end"); // break; } } } } catch (IOException e) { e.printStackTrace(); } finally { // Close the socket connections s.close(); ss.close(); } } }
Kod Pelanggan
public class Client { public static void main(String[] args) { Socket socket = null; try { // Create a client socket and connect to the server on port 34000 socket = new Socket("localhost", 34000); // Create input and output streams for communication BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); OutputStreamWriter out = new OutputStreamWriter(socket.getOutputStream()); // Send a message to the server String string = "end"; out.write(string); out.flush(); // Listen for the server's response while (true) { String string2 = in.readLine(); if (string2.equals("to end")) { System.out.println("yes sir"); break; } } } catch (Exception e) { e.printStackTrace(); } finally { // Close the socket connection socket.close(); } } }
Menyelesaikan masalah
Jika pelayan gagal untuk membalas pelanggan, terdapat beberapa sebab yang mungkin:
Penyelesaian: Tambahkan "rn" pada akhir mesej dihantar dari kedua-dua pelanggan dan pelayan.
string = "end\r\n"; out.write(string); out.flush();
out.write("to end\r\n"); out.flush();
Penyelesaian: Sahkan sambungan rangkaian dan semak kemungkinan tembok api atau tetapan penghala yang mungkin menyekat masuk atau keluar sambungan.
Penyelesaian: Laraskan nombor port dalam kedua-dua klien dan pelayan kod jika perlu.
Atas ialah kandungan terperinci Mengapa Pelayan Java Saya Gagal Menjawab Permintaan Pelanggan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!