2017-02-08 9 views
0

Javaでソケットを作成しました。
このソケットはサーバーに接続します。Javaソケットはメッセージを1つだけ送信します

私のプログラムを起動すると、サーバーは私のソケットがAEOSに接続されているというメッセージを送信します。 いくつかのコマンドを送信するためにサーバにログインしようとすると、サーバは再び応答します:status connected to AEOS version

これは私が期待するメッセージではありません。通常、サーバは「応答がtrue」を送信する必要があります。

私を助けることができますか?

ありがとうございました。あなたは、サーバーが送信されていたすべてのものを読むことをしようとしないのはなぜ

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

?また、毎回新しいソケットを開く必要がありますか?実装によって異なります。試してみてください:

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

関連する問題