从服务器检索字符串

时间:2013-11-03 06:07:04

标签: java

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

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

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

public void retrieveFileData() throws IOException {
    Socket theSocket = new Socket(this.theHostIP, this.portNumber);
    PrintWriter messageWriter = new PrintWriter(theSocket.getOutputStream(),
            true);
    messageWriter.write("REFRESH");
    BufferedReader filesReader = new BufferedReader(new InputStreamReader(
            theSocket.getInputStream()));
    this.retrievedFiles = filesReader.readLine();
    theSocket.close();
}

这是服务器端的代码:

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

所以,基本上,客户端发送一条简单的消息告诉服务器它想要什么(在这种情况下,“REFRESH”来检索文件列表),服务器应该通过其输出编写器将它提供给客户端。 p>

我做错了什么?我怀疑问题是在客户端,因为“收到刷新请求...”不会在控制台中打印。

感谢。

1 个答案:

答案 0 :(得分:1)

我认为这是因为PrintWriter messageWriter没有刷新。 我会尝试。

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