Le serveur ne parvient pas à répondre au client dans la communication socket Java
En Java, lorsque vous tentez d'établir une communication socket entre un client et un serveur, il est Il est possible de rencontrer des situations dans lesquelles le serveur ne répond pas au client. Cela peut être dû à plusieurs raisons, que nous explorerons dans cet article.
Communication socket client-serveur
Pour initier la communication, le serveur crée généralement un ServerSocket et écoute les connexions entrantes sur un port spécifique. Une fois qu'un client se connecte, le serveur crée un objet Socket pour établir la connexion. Le client crée également un objet Socket pour établir une connexion avec le serveur.
Code du serveur
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(); } } }
Code client
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(); } } }
Dépannage
Si le serveur ne parvient pas à répondre au client, il y a plusieurs raisons possibles :
Solution : Ajoutez "rn" au fin du message envoyé à la fois par le client et le serveur.
string = "end\r\n"; out.write(string); out.flush();
out.write("to end\r\n"); out.flush();
Solution : Vérifiez la connexion réseau et recherchez d'éventuels pare-feu ou paramètres de routeur susceptibles de bloquer connexions entrantes ou sortantes.
Solution : Ajustez le numéro de port dans le client et le serveur code si besoin.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!