После передачи файла через ServerSocket сервер присылает строку null

Создал сервер и клиент, который в начале отправляет текст, после этого передаёт файл клиенту, далее он информирует клиента о передаче файла, но в ответ клиент получает null, это происходит из-за передачи файла, почему? Сервер отправляет null после передачи файла

public class server {

public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {
    int count = 0;
    String namePackage;
    int i = 1;
    ServerSocket serverSocket = new ServerSocket(8000);
    while (true) {
        Socket clientSocket = serverSocket.accept();
        System.out.println("Client accepted " + (count++));
        OutputStream out = clientSocket.getOutputStream();
        OutputStreamWriter writer = new OutputStreamWriter(clientSocket.getOutputStream());
        BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        writer.write("Введите слово Сборка для сборки\n");
        writer.flush();
        String mess = reader.readLine();
        if (Objects.equals(mess, "Сборка")) {
                writer.write("Введите имя пакета\n");
                writer.flush();
                namePackage = reader.readLine();
                //Sborka sborka = new Sborka(namePackage, i);
                //sborka.main();
                writer.write("Ваш файл готов\n");
                writer.flush();
                FileDownload(clientSocket, out);
        }else {
            writer.write("Ваш запрос не распознан\n");
            writer.flush();
            System.out.println(mess);
        }
        writer.write("Файл был передан\n");
        writer.flush();
        out.close();
        writer.close();
        reader.close();
        clientSocket.close();
    }
}
public static void FileDownload(Socket clientSocket, OutputStream out) throws IOException {
    InputStream in = new FileInputStream("C:\\ycheba\\Clienti\\AlGot\\app-debug.apk");
    int cou;
    byte[] buffer = new byte[4096]; // or 4096, or more
    while ((cou = in.read(buffer)) > 0)
    {
        out.write(buffer, 0, cou);
        out.flush();
    }
    in.close();
}

}

А это клиент

public class Client {
public static void main(String[] args) throws IOException {
    Scanner sc = new Scanner(System.in);
    Socket clientSocket = new Socket("localhost", 8000);
    OutputStreamWriter writer = new OutputStreamWriter(clientSocket.getOutputStream());
    BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
    String mess = reader.readLine();
    System.out.println(mess);
    mess = sc.next();
    writer.write(mess+ "\n");
    writer.flush();
    mess = reader.readLine();
    System.out.println(mess);
    mess = sc.next();
    writer.write(mess+ "\n");
    writer.flush();
    mess = reader.readLine();
    System.out.println(mess);
    InputStream in = clientSocket.getInputStream();
    FileOutputStream out = new FileOutputStream("C:\\ycheba\\Clienti\\ak47debug.apk");
    int cou;
    byte[] buffer = new byte[4096]; // or 4096, or more
    while ((cou = in.read(buffer)) > 0)
    {
        out.write(buffer, 0, cou);
    }
    out.close();
    mess = reader.readLine();
    System.out.println(mess);
    in.close();
    writer.close();
    reader.close();
    clientSocket.close();
}

}

А также не работает переданный apk, нужно передавать архивом?


Ответы (0 шт):