2017-10-27 6 views
0

クライアントが「Hello mr server」というメッセージを送信した場合、私は基本的にサーバから応答を返そうとしていました。しかし、それはしません。ここで クライアント(Java、ソケット)から特定のメッセージを受け取ったときに自動返信を返す方法

が私のコードです: brは文字列ではなく、

は、代わりにあなたが使用する必要がありますBufferedReaderのために、あなたは常にfalseを返しますどのbr.equals("hey mr server")を使用している

public class Server { 

    public static final int PORT = 6666; 

    public static void main(String[] args) throws IOException { 
     new Server().runServer(); 
    } 

    public void runServer() throws IOException { 
     ServerSocket serverSocket = new ServerSocket(PORT); 
     System.out.println("Server up and ready for connections....."); 
     while (true) { 
      Socket socket = serverSocket.accept(); 

      BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); //for fetching data 
      String str = br.readLine(); //for fetching data 

      System.out.println("Client Data:" + str + '\n'); 


      String dataSendingToClient = "gg"; 
      OutputStreamWriter os = new OutputStreamWriter(socket.getOutputStream()); //for sending data 
      PrintWriter out = new PrintWriter(os); //for sending data 
      out.println(dataSendingToClient); 
      os.flush(); 



      if (br.equals("hey mr server")){ 
       OutputStreamWriter os2 = new OutputStreamWriter(socket.getOutputStream()); //for sending data 
       PrintWriter out2 = new PrintWriter(os); //for sending data 
       out2.println("hey mr client"); 
       os.flush(); 
      } 

     } 
    } 

} 
+0

あなたが試したことと何を得ているのかを試してみてください。エラー出力)。 – user3366016

答えて

0

ごすでに定義されてstr変数str.equals("hey mr server")


また、現在のコードでは、サーバー次の接続に移動する前にクライアントからメッセージを1つだけ読み取る

サーバが単一のクライアントからより多くのメッセージを読み込めるようにするには、クライアントが切断メッセージを送信するまでループする必要があります/ソケットは閉じる

while(true) 
{ 
    Socket socket = serverSocket.accept(); 
    BufferedReader br = [...]; 
    PrintWriter out = [...]; 

    for(String message = br.readLine(); message != null; message = br.readLine()) 
    { 
     //do stuff 
     //message is each line from the client 
    } 
} 

あなたは複数のクライアントが接続しようとしている場合、あなたはクライアントがデータ

を送信した場合ポーリングする私は、接続の詳細を囲み、スタックを使用するクラスをお勧めします

接続をマルチスレッドにする必要があります

注:これを大雑把な擬似コードとみなしてください。

+0

あなたの意見をお寄せいただきありがとうございます。 –

+0

@ AftabAlam2を複数の読み取り/接続で更新 – phflack

関連する問題