2017-10-04 10 views
0

私はJava 8でネットワークを扱う方法を学ぼうとしています。クライアントプログラムをサーバーと通信させようとしています。クライアントには文字列が要求され、文字列がサーバーに送られ、サーバーはその文字列を上の文字で返します。Javaプログラム間の通信

サーバーの一部を動作させることができません。接続が確立されている以外は何も書き込まれません。誰かが自分のコードに何が間違っているのか説明できますか?

サーバー:

public static void main(String[] args) throws IOException { 
    int listenPort = 9000; 
    ServerSocket listenSocket = new ServerSocket(listenPort); 
    Socket socket = listenSocket.accept(); 

    System.out.println("Connexion réussie !"); 

    InputStream inputStream = socket.getInputStream(); 
    OutputStream outputStream = socket.getOutputStream(); 

    BufferedReader buffer = new BufferedReader(new InputStreamReader(inputStream)); 
    DataOutputStream output = new DataOutputStream(outputStream); 

    String line = null; 

    System.out.println("test : " + buffer.readLine()); 

    while((line = buffer.readLine()) != null) { 
     System.out.println("Message reçu : " + line); 
     System.out.println("Message envoyé : " + line.toUpperCase()); 
     output.writeUTF(line.toUpperCase()); 

     if(line.equals("stop")) { 
      socket.close(); 
      listenSocket.close(); 
     } 
    } 
} 

クライアント側:クライアント・メソッド内

public static void main(String[] args) throws IOException, UnknownHostException { 
    Socket socket = new Socket("127.0.0.1", 9000); 

    InputStream inputStream = socket.getInputStream(); 
    OutputStream outputStream = socket.getOutputStream(); 
    DataInputStream input = new DataInputStream(inputStream); 
    DataOutputStream output = new DataOutputStream(outputStream); 

    BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in)); 

    String line = null; 

    while((line = buffer.readLine()) != null) { 
     System.out.println("Message envoyé : " + line); 
     output.writeChars(line); 
     System.out.println("Message reçu : " + input.readUTF()); 

     if(line.equals("stop")) { 
      break; 
     } 
    } 

    socket.close(); 

} 
+0

試し 'output.flushを追加する()'権をoutput.writeChars( ''後):次のように

は、クライアントのコードを変更し

。 –

答えて

0

、あなたはwhileループ内output.writeChars(line)を呼び出し、これはあなたが後にサーバにサーバーを何かを送ることを意味しあなたに何かを送ってください。

String line = "What a wonderful line"; 
System.out.println("Message envoyé : " + line); 
output.writeChars(line); 

while((line = buffer.readLine()) != null) { 
    System.out.println("Message reçu : " + input.readUTF()); 
} 
関連する問題