2016-09-25 53 views
0

我创建了一个简单的类,它将一个字符串发送到服务器,两者都使用Java Sockets API进行通信。服务器读取客户端发送的内容,并用另一个字符串进行响应。但客户端无法读取该响应。使用Java套接字API读取服务器响应

这是客户端类:

import java.io.IOException; 
import java.net.Socket; 

public class Client { 

    public static void main(String[] args) throws IOException { 
     Socket socket = new Socket("localhost", 8181); 
     socket.getOutputStream().write("Hello".getBytes()); 

     int read; 
     while ((read = socket.getInputStream().read()) > -1) { 
      System.out.print((char) read); 
     } 

     socket.close(); 
    } 

} 

这是服务器类:

import java.io.IOException; 
import java.net.ServerSocket; 
import java.net.Socket; 

public class Server { 

    public static void main(String[] args) throws IOException { 
     ServerSocket serverSocket = new ServerSocket(8181); 

     while (true) { 
      Socket socket = serverSocket.accept(); 
      int read; 
      while ((read = socket.getInputStream().read()) > -1) { 
       System.out.print((char) read); 
      } 

      socket.getOutputStream().write("Hi!".getBytes()); 
     } 

    } 

} 

我想,问题可能出在客户端执行流程,因为我不`吨知道我该怎么做才能等待服务器响应。换句话说,如何实现一个能够读取服务器响应的客户端?

回答

1
  1. 您不关闭插座。
  2. 服务器正试图读取直到流结束,然后发送答复。流的结束只发生在对等关闭连接时,所以即使修复(1)后也不可能发送回复。您需要阅读消息,无论您的应用程序协议如何。
+0

由于while((read = socket.getInputStream()。read())> -1),服务器等待客户端关闭连接。 –

0

您需要刷新或关闭输出流。

相关问题