我正在尝试制作一个文件共享 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”来检索文件列表)并且服务器应该将它的输出写入器提供给客户端。
我究竟做错了什么?我怀疑问题出在客户端,因为“收到的刷新请求......”没有在控制台中打印。
谢谢。