我正在写一个自定义协议。我有一个命令名,代码看起来如下。

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();

}


这应该工作

10-06 08:47