Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> OutputStreamReader и InputStreamReader в цикле, исключение java.net.ProtocolException 
:(
    Опции темы
lihusha
Дата 23.6.2009, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 8.6.2008

Репутация: нет
Всего: нет



Думаю, в общих вопросах место этой теме...

Люди , подскажите , будьте добры, в чем ошибка.

Есть аплет и сервлет .

В аплете создается URLConnection, в OutputStreamWriter записывается запрос к сервлету. Пока сервлет должен просто взять строку , переданную в теле запроса , и вернуть ее аплету , дописав в ее начало "response  :  "


В общем код примерно такой
аплет

Код

...
private final String serverUrl = "http://localhost:8084/ChatServer/Server";
private URL server = new URL(serverUrl);
private URLConnection connection = server.openConnection();
...
if(!connection.getDoOutput())
connection.setDoOutput(true);
OutputStream out = connection.getOutputStream();
OutputStreamWriter  writer = new OutputStreamWriter(out);

writer.write("someString");
writer.flush();
writer.close();

InputStream in = connection.getInputStream();
InputStreamReader isr = new InputStreamReader(in);
BufferedReader reader = new BufferedReader(isr);
String result = "";
String str = "";
while((str = reader.readLine()) != null)
{
    result += str;
}

in.close();
System.out.println("result  "+result);



сервлет

Код

.....
        ServletInputStream reader = request.getInputStream();
        int length = request.getContentLength();
        byte[]input = new byte[length];


        int c, count = 0;
        while
             ((c = reader.read(input, count, input.length - count)) != -1)
        {
            count += c;
        }
        reader.close();

        String inString = URLDecoder.decode(new String(input), "UTF-8");
        ServletOutputStream out = response.getOutputStream();
        OutputStreamWriter writer = new OutputStreamWriter(out);
        writer.write("response  :  "+inString);
        writer.flush();
        writer.close();
......



В общем , пытаюсь добиться , чтобы апплет и сервлет обменивались данными по HTTP : аплет отсылает сервлету данные , тот их обрабатывает и отсылает обратно результат , и так в замкнутом цикле.


Проблема вот в чем. Первый раз срабатывает все , вроде , нормально. Потом генерирует исключение 

Код

java.net.ProtocolException: Cannot write output after reading input


Подскажите , где корень данной проблемы
Спасибо
PM MAIL   Вверх
COVD
Дата 23.6.2009, 05:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

и так в замкнутом цикле

В цикле надо кадый раз открывать новое соединение:  - openConnection - write - read - openConnection - write  ....
А вы, наверное, делаете openConnection - write - read -write - read ...
PM MAIL   Вверх
lihusha
Дата 23.6.2009, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 8.6.2008

Репутация: нет
Всего: нет



Спасибо, получилось.
PM MAIL   Вверх
lihusha
Дата 23.6.2009, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 8.6.2008

Репутация: нет
Всего: нет



Реально и правильно ли делать общение сервера и клиента таким , что в некоторых случаях сервер не дает ответ клиенту , он просто записывает данные ,например , в базу данных?

Т.е. openConnection - write

Это сообщение отредактировал(а) lihusha - 24.6.2009, 10:45
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0712 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.