gpt4 book ai didi

java - 发送和创建文件

转载 作者:行者123 更新时间:2023-12-01 14:07:01 25 4
gpt4 key购买 nike

我正在编写一个自定义协议(protocol)。我有一个命令名称为 put 的代码,如下所示。

if(commandString.equals("PUT")){
File f = new File(currentFolder, "test.txt");
if(!f.exists())
f.createNewFile();
FileOutputStream fout = new FileOutputStream(f);
long size = 150;
long count = 0;
int bufferLeng = 0;
byte[] buffer = new byte[512];
while((bufferLeng = dis.read(buffer))>0) //dis is a data input stream.
{
count =+ bufferLeng;
fout.write(buffer);
}
System.out.println("All Good");
fout.flush();
fout.close();

}

该命令由客户端发送到服务器,如下 pWriter.println("PUT");。现在我运行它,它确实创建了文件 test.txt 但随后卡住并且服务器不显示 All Good 消息。为什么会这样?有什么简单的解决办法?

服务器和客户端工作正常!!

谢谢

最佳答案

服务器等待客户端关闭套接字。这将传输文件结尾,从而导致 dis.read() 返回 -1。

通常,这不是您想要的。解决方案是在数据之前发送文件大小,然后准确读取这个数据量。

确保您的客户端在写入文件数据的最后一个字节后调用 socket.flush(),否则数据可能会卡在缓冲区中,这也会导致服务器挂起。

关于java - 发送和创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18831023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com