Java 套接字接收文件然后将响应发送回客户端

Java socket receiving file and then send response back to client

我在建立套接字服务器时遇到问题,客户端可以向我发送文件,我可以收到that.But当我尝试向客户端发送ACK消息时,他们无法收到。

            dis = new DataInputStream(client.getInputStream());
            File file = new File("D:/socket/files/");
            if (!file.exists()) {
                file.mkdir();
            }
            fos = new FileOutputStream(new File(filePath));
            inputByte = new byte[1024];
            System.out.println("Start to receive file");
            while ((length = dis.read(inputByte, 0, inputByte.length)) > -1) {
                String s = new String(inputByte,0,length);
                fos.write(inputByte, 0, length);
                fos.flush();
            }
            System.out.println("File Received Location: " + filePath);
            OutputStream out = client.getOutputStream();
            PrintWriter pw=new PrintWriter(out);
            pw.write("hello");
            pw.flush();
            pw.close();

这是我的服务器接收和发送消息的代码。我用wireshark发现client给我发数据后,我会自动发回[ACK] message 没有任何内容,然后client发[FIN,ACK]给我,我可以回发两条message,一个是[ACK]和另一个是 [PSH,ACK]。 "hello" 消息在 [PSH,ACK] 数据包中。我认为原因是当客户端向我发送 [FIN,ACK] 时,他们已经关闭了连接。无论如何,我可以在发送回客户端的第一个 [ACK] 数据包中添加消息吗?wireshark-capture

没有。但你为什么要那样做?您的客户端正在发送数据,一旦确认 (ACK),它就会关闭连接。它甚至不会读取服务器发送的数据。真正的问题是,客户是否需要数据?好像没有。