Я пишу собственный протокол. У меня есть имя команды, и код выглядит следующим образом.Отправка и создание файла
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) 'метод не существует. Возможно, вы имели в виду 'if (commandString.equals (« PUT »)) {' –
да, клиент закрывает соединение –