Java 소켓 통신에서 서버가 클라이언트에 응답하지 못함
Java에서 클라이언트와 서버 간에 소켓 통신을 설정하려고 하면 오류가 발생합니다. 서버가 클라이언트에 응답하지 못하는 상황이 발생할 수 있습니다. 이는 여러 가지 이유 때문일 수 있으며 이 기사에서 살펴보겠습니다.
클라이언트-서버 소켓 통신
통신을 시작하기 위해 서버는 일반적으로 ServerSocket을 생성하고 특정 포트에서 들어오는 연결을 수신합니다. 클라이언트가 연결되면 서버는 연결을 설정하기 위해 Socket 객체를 생성합니다. 클라이언트는 또한 서버와의 연결을 설정하기 위해 소켓 개체를 생성합니다.
서버 코드
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(); } } }
클라이언트 코드
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(); } } }
문제 해결
서버가 클라이언트에 응답하지 못하는 경우 다음과 같은 몇 가지 이유가 있을 수 있습니다.
해결책: "rn"을 코드에 추가하세요.
string = "end\r\n"; out.write(string); out.flush();
out.write("to end\r\n"); out.flush();
해결 방법: 네트워크 연결을 확인하고 차단할 수 있는 방화벽이나 라우터 설정이 있는지 확인하세요. 들어오거나 나가는 연결.
해결책: 클라이언트와 서버 모두에서 포트 번호를 조정하세요. 필요한 경우 코드를 입력하세요.
위 내용은 내 Java 서버가 클라이언트 요청에 응답하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!