I have a client and server program that is supposed to work like this:
- Client types in a filename into the command line (stdin) and the server sends the client the file data through the socket.
- Client types in another name and another file are sent.
However, I am currently only able to get one file to be sent. The second time I type in a filename, it does not go into the while loop in my Client here:
while ((count = in.read(buffer)) > 0) {
Client (variable "fromUser" is the filename of the requested file from the server, outCommands is the outgoing datastream that transmits this filename to the Server): 
while (true) {
    fromUser = stdIn.readLine();
    if (fromUser != null) {
        outCommands.println(fromUser);
        while ((count = in.read(buffer)) > 0) {
            String fileName = "downloaded" + in.readUTF();
            OutputStream fileOut = new FileOutputStream(fileName);
            try {
                fileOut.write(buffer, 0, count);
                fileOut.flush();
            } catch (IOException e) {
            }
            fileOut.close();
            break;
        }
    } else if (fromUser.equals("Stop")) {
        in.close();
        stdIn.close();
        dlSocket.close();
    }
}
Server ("dlp" is the server socket, "out" is the outgoing datastream):
while (!(fileD = in.readLine()).equals(null)) {
    System.out.println("Line read:" + fileD);
    // Load file
    File file = new File(fileD);
    System.out.println(file.getAbsolutePath());
    System.out.println("File created...");
    InputStream fileIn = new FileInputStream(file);
    outputLine = dlp.processInput(null);
    byte[] buffer = new byte[8192];
    int count;
    while ((count = fileIn.read(buffer)) > 0) {
        System.out.println("Beginning file transfer");
        out.write(buffer, 0, count);
    }
    System.out.println("Completed file transfer");
    // Write filename to out socket
    out.writeUTF(file.getName());
    out.writeLong(file.length());
    out.flush();
}
in.close();
out.close();
clientSocket.close();
Can someone help me figure out why this is happening? I don't understand why count = in.read(buffer) is not greater than zero once the server sends over the second file after it's requested by the client.
Src: https://github.com/richardrl/downloader/tree/master/src/main/java
 
     
     
    