Heim >Java >javaLernprogramm >Warum reagiert mein Java-Server nicht auf Clientanfragen?
Server reagiert nicht auf Client in der Java-Socket-Kommunikation
In Java ist dies der Fall, wenn versucht wird, eine Socket-Kommunikation zwischen einem Client und einem Server einzurichten Es kann vorkommen, dass der Server nicht auf den Client antwortet. Dies kann mehrere Gründe haben, die wir in diesem Artikel untersuchen werden.
Client-Server-Socket-Kommunikation
Um die Kommunikation zu initiieren, erstellt der Server normalerweise einen ServerSocket und lauscht auf eingehende Verbindungen an einem bestimmten Port. Sobald ein Client eine Verbindung herstellt, erstellt der Server ein Socket-Objekt, um die Verbindung herzustellen. Der Client erstellt außerdem ein Socket-Objekt, um eine Verbindung mit dem Server herzustellen.
Servercode
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(); } } }
Clientcode
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(); } } }
Fehlerbehebung
Wenn der Server nicht auf die reagiert Client, es gibt ein paar mögliche Gründe:
Lösung: Fügen Sie „rn“ hinzu Ende der Nachricht, die sowohl vom Client als auch vom Server gesendet wird.
string = "end\r\n"; out.write(string); out.flush();
out.write("to end\r\n"); out.flush();
Lösung: Überprüfen Sie die Netzwerkverbindung und prüfen Sie, ob möglicherweise Firewalls oder Routereinstellungen ein- oder ausgehende Verbindungen blockieren Verbindungen.
Lösung: Passen Sie die Portnummer sowohl im Client als auch im Server an Geben Sie bei Bedarf einen Code ein.
Das obige ist der detaillierte Inhalt vonWarum reagiert mein Java-Server nicht auf Clientanfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!