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

}
}