Java 从客户端接受文件名的服务器
服务器部分将目录中可用文件的列表发送到客户端,客户端选择其中一个,然后将来自客户端的请求发送到服务器,然后服务器将文件发送到客户端。我的服务器有问题,我不知道如何从客户端接受请求的文件名,也许有人有主意 服务器部件:Java 从客户端接受文件名的服务器,java,Java,服务器部分将目录中可用文件的列表发送到客户端,客户端选择其中一个,然后将来自客户端的请求发送到服务器,然后服务器将文件发送到客户端。我的服务器有问题,我不知道如何从客户端接受请求的文件名,也许有人有主意 服务器部件: import java.io.*; import java.net.*; public class Server { public static void main(String[] args) throws IOException { ServerSocket ss =
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket ss = null;
try {
ss = new ServerSocket(9999);
} catch(IOException e) {
e.getStackTrace();
}
while(true) {
try {
Socket s = ss.accept();
System.out.println("Connection: " +s);
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
String fileName = getFileName("E://share//");
//sending available files names to client
out.println(fileName);
out.close();
//System.out.println("File requested from client:");
//String file = in.readLine();
//System.out.println(file);
s.close();
} catch(IOException e) {
e.printStackTrace();
}
//ss.close();
}
}//methode which get file names from directory
public static String getFileName(String folderName) {
File folder = new File(folderName);
File[] listOfFiles = folder.listFiles();
StringBuffer sb = new StringBuffer();
for(int i=0; i<listOfFiles.length; i++) {
//System.out.println(listOfFiles[i].getName());
sb.append(listOfFiles[i].getName()+"\n");
}
return sb.toString();
}
}
服务器可以像客户端读取套接字输出一样读取套接字输出。使用in.readline我使用inreadLine;但它不工作,这就是为什么我评论它跳过了部分,当客户端输入ir需要的文件名时,我不知道如何修复它。你说它不工作是什么意思?它不会跳过任何内容。如果它没有阅读,那么你就没有发送它。
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
Socket s = new Socket(InetAddress.getLocalHost(),9999);
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
//for gettin file name from available
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
//output from server, available file list
String fileNames;
while((fileNames = br.readLine()) != null) {
System.out.println(fileNames);
}
br.close();
//imputing file name which have to be send from server to client
System.out.println("Which file do you want to send:");
String fileName = sin.readLine();
out.println(fileName);
out.close();
s.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}