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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Надежность println и readln 
V
    Опции темы
polakwilno
  Дата 14.8.2006, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Хай пиплы, у мну такая вот ситуация:

Код

clientSocket = new Socket(hostname, port);


Затем на сервере 
Код

os = new PrintStream(clientSocket.getOutputStream());
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));


и у клиента
Код

os = new PrintStream(clientSocket.getOutputStream());
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));


Вопрос: могу ли я быть на 100% уверен, что если клиент/сервер пошлет строку через os.println() то сервер/клиент получат её целиком и неповрежденной? Т.е. если посылалось "АБВГД" то и придет "АБВГД" в 100% случаев.

За ранее благодарен.
PM MAIL   Вверх
LSD
Дата 15.8.2006, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



TCP/IP протокол с гарантированной доставкой, т.е. корректность и целостность передваемых данных контролируются.
Единственное но, если ты посылаешь большой объем данных, и в середине передачи произойдет обрыв связи, то будет передана только часть данных, но ты при этом получишь ексепшн. Но из-за того что ты используешь PrintStream, ты об этом эксепшне не узнаешь.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
polakwilno
Дата 15.8.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

Но из-за того что ты используешь PrintStream, ты об этом эксепшне не узнаешь.


Хмм...  Неужели catch(IOException e) тут непоможет?

Цитата

Единственное но, если ты посылаешь большой объем данных, и в середине передачи произойдет обрыв связи, то будет передана только часть данных


Может тогда надежнее считывать посимвольно? Я так пытался но в яве с етим ен так просто оказалось smile Скажем используя int n = in.read() n равно 1. Как его теперь конвертировать в обычный char? Операция типа c = (char)n работает некорректно - результат '/u0001' или чтото вроде... 
PM MAIL   Вверх
LSD
Дата 15.8.2006, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(polakwilno @  15.8.2006,  12:40 Найти цитируемый пост)
Хмм...  Неужели catch(IOException e) тут непоможет?

Просто PrintStream перехватывает ексепшены. Единственный способ, это делать потом checkError(), но по моему это неудобно, лучше использовать Writer.


Цитата(polakwilno @  15.8.2006,  12:40 Найти цитируемый пост)
Может тогда надежнее считывать посимвольно? Я так пытался но в яве с етим ен так просто оказалось  Скажем используя int n = in.read() n равно 1. Как его теперь конвертировать в обычный char? Операция типа c = (char)n работает некорректно - результат '/u0001' или чтото вроде... 

Зачем, это будет намного медленней. Просто замени PrintStream на Writer и поставь обработку ошибок. Когда произойдет разрыв соединения, ты получишь ошибку и будешь знать что данные не доставлены.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
polakwilno
Дата 18.8.2006, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ясненько, попробую так...

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

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

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


 




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


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

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