Почему печать клиента исчезает, когда сервер получает поток клиента с Java сокетами и NetBeans? - PullRequest
0 голосов
/ 26 февраля 2020

Я новичок в java программировании сокетов. Пока я хочу создать сеть связи между сервером и клиентом, и я сделал это:

-Server отправил список файлов клиенту. -Клиент получил список и отобразил его в алфавитном порядке и пронумеровал -Клиент просит пользователя выбрать файл из списка

  • Теперь я хочу, чтобы сервер получил выбор пользователя от клиента, а затем отправил файл just клиенту, чтобы отобразить его

!! Пока я не написал System.out.println(in.readLine()); все работает файл. После этого, когда я запускаю и сервер, и клиент, он ничего не появляется на выходе. Любая помощь ???

Код сервера:

public static void main(String[] args) {        

        ArrayList<String> servListOfFiles = new ArrayList<String>();


        File folder = new File("src/serverdata");
        File[] files = folder.listFiles();
        for (File f: files){
            if(f.isFile()){
                servListOfFiles.add(f.getName());
            }
        }

        try {
                ServerSocket serverSocket = new ServerSocket(2345);


                Socket clientSocket = serverSocket.accept();


                BufferedReader in = new BufferedReader(newInputStreamReader(clientSocket.getInputStream()));


                PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);


                out.println(servListOfFiles);

                out.flush();

                System.out.println(in.readLine());

        } catch (IOException ex) {
            System.out.println(ex.getMessage());
        }


    }

Код клиента:

    public static void main(String[] args) {

        try {
            Socket socket = new Socket("localhost", 2345);


            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);


            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));


            ArrayList clListOfFiles = new ArrayList<String>();
            String line = new String();
            while ((line = in.readLine()) != null) {

                String[] tokens = line.split(",");
                for (String t : tokens) {
                    clListOfFiles.add(t);
                }

                Collections.sort(clListOfFiles);

            }

            ArrayList<String> finalList = new ArrayList();
            for (int i = 0; i < clListOfFiles.size(); i++) {

            System.out.println(((i + 1) + ".") + clListOfFiles.get(i));


            Scanner sc = new Scanner(System.in);    
            System.out.println("Choose the number of the file:");

            out.println(sc.nextLine());


        } catch (IOException ex) {
            ex.getMessage();
        }
    }

}
...