2017-10-04 73 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()'右)'。 –

回答

0

內,您的客戶端的方法,你叫output.writeChars(line) while循環中,這意味着你服務器後發送一些東西到服務器發送給你一些東西。

更改您的客戶端代碼如下:output.writeChars(後`

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()); 
}