Java 从服务器检索字符串

Java 从服务器检索字符串,java,Java,我正在尝试制作一个文件共享java应用程序。 我正在做两个独立的项目,服务器和客户端。服务器端存储了文件,客户端可以请求从服务器下载文件,或者将文件上载到服务器,或者从服务器检索文件列表 我在从服务器检索文件时遇到问题。我已经创建了一个检索文件的方法,但是当该方法运行时,程序挂起,没有任何响应 下面是我检索文件的代码(很明显,对于客户端): 以下是服务器端的代码: ServerSocket theServerSocket = new ServerSocket(this.portNumber);

我正在尝试制作一个文件共享java应用程序。 我正在做两个独立的项目,服务器和客户端。服务器端存储了文件,客户端可以请求从服务器下载文件,或者将文件上载到服务器,或者从服务器检索文件列表

我在从服务器检索文件时遇到问题。我已经创建了一个检索文件的方法,但是当该方法运行时,程序挂起,没有任何响应

下面是我检索文件的代码(很明显,对于客户端):

以下是服务器端的代码:

ServerSocket theServerSocket = new ServerSocket(this.portNumber);
Socket theClientSocket = theServerSocket.accept();
BufferedReader inputReader = new BufferedReader(new InputStreamReader(
            theClientSocket.getInputStream()));
PrintWriter outputWriter = new PrintWriter(
            theClientSocket.getOutputStream(), true);
String line = inputReader.readLine();

while (true) {
    if (line.startsWith("REFRESH")) {
System.out.println("received refresh request...");
outputWriter.write(this.filesToSend);
} 
因此,基本上,客户端发送一条简单的消息,告诉服务器它想要什么(在本例中,“刷新”以检索文件列表),服务器应将其与输出编写器一起提供给客户端

我做错了什么?我怀疑问题出在客户端,因为控制台中没有打印“已接收刷新请求…”


谢谢。

我想是因为PrintWriter messageWriter没有刷新。 我会试试看

 messageWriter.println("REFRESH");
 messageWriter.flush();

我认为PrintWriter outputWriter=新的PrintWriter(客户端socket.getOutputStream(),true);此语句使PrintWriter自动刷新。我看那不是真的。非常感谢。a好的。这是真的,但是你应该用你的println来创建一个换行符。或者写入(“刷新”);那也行。请参阅javadoc“autoFlush-A boolean;如果为true,println、printf或format方法将刷新输出缓冲区”。所以当你使用一个简单的书写时就不是了。
 messageWriter.println("REFRESH");
 messageWriter.flush();