2017-02-08 30 views
0

Я сделал сокет в Java.
Этот разъем подключается к серверу.Java-сокет отправляет только одно сообщение

Когда я запускаю свою программу, сервер отправляет сообщение, что мой сокет связан с AEOS. Когда я пытаюсь войти на сервер для отправки некоторых команд, сервер снова отвечает: status connected to AEOS version

Это не сообщение, которое я ожидаю, как правило, мой сервер должен отправить ответ «истина».

Вы можете мне помочь?

Спасибо.

import java.io.*; 
import java.net.*; 

class TCPClient { 
    public static void main(String argv[]) throws Exception { 
     while(true) { 
      String sentence;    
      String modifiedSentence;  

      Socket clientSocket = new Socket("127.0.0.1", 1201); 

      BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); 
      DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());   
      BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 

      sentence = inFromUser.readLine(); 
      outToServer.writeBytes(sentence + '\n'); 
      modifiedSentence = inFromServer.readLine(); 
      System.out.println("FROM SERVER: " + modifiedSentence); 

      clientSocket.close(); 
     } 
    } 
} 

output socket

+0

Пожалуйста, не публикуйте скриншоты выхода консоли. Вы должны скопировать текст и вставить его в блок кода, отредактировав свой вопрос. – SiHa

ответ

0

Почему бы вам не попробовать, чтобы прочитать все, что отправленное сервер? Кроме того, нужно каждый раз открывать новый Socket? Зависит от вашей реализации. Попробуйте следующее:

public static void main(String[] args) { 

     Socket clientSocket = null; 

     try { 
      clientSocket = new Socket("127.0.0.1", 1201); 

      BufferedReader inFromUser = new BufferedReader(
        new InputStreamReader(System.in)); 
      DataOutputStream outToServer = new DataOutputStream(
        clientSocket.getOutputStream()); 
      BufferedReader inFromServer = new BufferedReader(
        new InputStreamReader(clientSocket.getInputStream())); 

      String initialMessageFromServer = null; 

      while ((initialMessageFromServer = inFromServer 
        .readLine()) != null) { 
       System.out.println(initialMessageFromServer); 
      } 

      while (true) { 
       String sentence = inFromUser.readLine(); 
       outToServer.writeBytes(sentence + '\n'); 

       StringBuilder modifiedSentence = new StringBuilder(); 
       String responseFromServer = null; 

       while ((responseFromServer = inFromServer.readLine()) != null) { 
        modifiedSentence.append(responseFromServer); 
        modifiedSentence.append('\n'); 
       } 

       System.out 
         .println("FROM SERVER: " + modifiedSentence.toString()); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      if (clientSocket != null) { 
       try { 
        clientSocket.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 
+0

спасибо за быстрый ответ. Я пробовал код, но теперь он подключается к серверу, но когда я отправляю команду, то происходит нечетное. Обычно после подключения к серверу я должен ввести свой логин и пароль. Когда я ввожу свой ответ сервера с текстом. Этого не происходит. – metalgastje