我正在写一个自定义协议。我有一个命令名,代码看起来如下。
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
,但随后冻结,服务器未显示“所有良好”消息。为什么会这样?什么是简单的解决方法?服务器和客户端正常工作!!
谢谢
最佳答案
也许消除dis.read(buffer)
并使用以下内容。
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;
byte[] buffer = new byte[512];
int bufferLeng = buffer.length;
while(count < size && bufferLeng>0) //dis is a data input stream.
{
fout.write(buffer);
count =+ bufferLeng;
}
System.out.println("All Good");
fout.flush();
fout.close();
}
这应该工作