2017-10-04 70 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()); 
}