2015-11-17 2 views
0

Я не могу получить ответ с сервера. Когда я запускаю клиент и сервер, ничего не происходит.Ответа не получено получено с сервера

Вот код сервера

public class Server { 

    public static void main(String[] zero) throws IOException { 
     ServerSocket socketServer; 
     Socket socketDuServer; 
     PrintWriter out; 
     BufferedReader in; 
     socketServer = new ServerSocket(2009); 
     socketDuServer = socketServer.accept(); 
     in = new BufferedReader(new InputStreamReader(socketDuServer.getInputStream())); 
     String message = in.readLine(); 
     out = new PrintWriter(socketDuServer.getOutputStream(), true); 
     String numberMessage = "The Number of ET est:" + StringToArrayChar(message); 
     System.out.println(numberMessage); 
     out.print(numberMessage); 
     out.flush(); 
     socketDuServer.close(); 
     socketServer.close(); 
    } 

    public static int StringToArrayChar(String s) { 
     int c = 0, k = 0; 
     char[] charArray = s.toCharArray(); 
     for (int j = 0; j < s.length(); j++) { 
      if (charArray[j] == 'e') { 
       k = j + 1; 
       if (charArray[k] == 't') { 
        c++; 
       } 
      } 
     } 
     return c; 
    } 
} 

и вот код клиента

public class Client { 

    public static void main(String[] args) throws IOException { 
     Socket socket; 
     BufferedReader in; 
     PrintWriter out; 
     String message; 
     socket = new Socket(InetAddress.getLocalHost(), 2009); 
     out = new PrintWriter(socket.getOutputStream(), true); 
     out.print("helloet"); 
     out.flush(); 
     in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
     message = in.readLine(); 
     System.out.println(message); 
     socket.close(); 
    } 
} 
+0

Try ** out.println() ** нет печать(). – WalterM

ответ

1

Ваш сервер пытается получить линию но ваш клиент никогда не посылает строку.

Невозможно устранить эту проблему. Зачем? Потому что мы не можем сказать, неверен ли сервер при попытке получить строку или клиент неверен, не отправляя строку. Единственное, что мы могли бы сказать, - это обратиться к спецификации протокола, которая объясняет, как данные об обмене сервером и клиентом. И нет никого. Потерпеть неудачу.

Пожалуйста, сделайте огромный шаг назад. Прочтите спецификации для нескольких протоколов, расположенных поверх TCP, таких как HTTP, IRC и SMTP. Затем, прежде чем вы начнете писать код, который использует TCP, потратьте время, чтобы четко документировать свой протокол. Это позволит избежать ошибок, подобных этой, и сотни других людей, которые сначала пытаются использовать TCP, неизбежно делают.

Я знаю, это звучит как огромная боль. Но поверьте мне, есть десятки подобных ошибок, которые ждут, когда вы их сделаете.

+0

Извините, я пропустил метод readLine() в вопросе. Благодарю. Я тоже отвечу на ваш ответ. –

Смежные вопросы