我在寫一個自定義協議。我有一個命令名稱的代碼,代碼如下所示。發送和創建文件
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(緩衝器)'是阻塞呼叫。你的客戶是否關閉了連接? –
我不會想象代碼甚至會編譯;看看第一行:'if(commandString.equels(「PUT」)){'除非'commandString'不是'java.lang.String'(在這種情況下你的命名約定看起來不準確),'equels(String) '方法不存在。也許你的意思是'如果(commandString.equals(「PUT」)){' –
是客戶端關閉連接 –