Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Java > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 04.10.2013, 17:39   #1
Voipp
Пользователь
 
Регистрация: 03.08.2009
Сообщений: 32
По умолчанию чтение и запись в сокеты

Добрый день! Почитал статьи по сокетам , во всех них используются разные классы для ввода-вывода в сокет:
Код:
            InputStream sin = socket.getInputStream();
            OutputStream sout = socket.getOutputStream();

            // Конвертируем потоки в другой тип, чтоб легче обрабатывать текстовые сообщения.
            DataInputStream in = new DataInputStream(sin);
            DataOutputStream out = new DataOutputStream(sout);
и еще другой способ :
Код:
              PrintWriter out = new PrintWriter(socket.getOutputStream() , true);
              BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream()  ) );
В чем отличие этих способов задания вводва-вывода ?

В C#,C++ классов вывода-ввода было достаточно и никакой избыточности не получалось. В Java я столкнулся с многочисленными классам-обертками и окончательно перестал понимать какую функциональность каждый добавляет. Помогите расставить все по полкам, спасибо.

PS Пишут, что главные причины ввода классов Reader (по сравнению со старыми InputStream , OutputStream) - это интернализация и ускорение работы. Но при этом используя старые классы, я все равно могу корректно работать с символами кириллицы. Что-то тут не так

Последний раз редактировалось Voipp; 04.10.2013 в 18:20.
Voipp вне форума   Ответить с цитированием
Старый 05.10.2013, 03:23   #2
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

да из названия классов все понятно, на крайний случай можно открыть доку к классам.
InputStream&OutputStream - нижележащие классы, они обеспечивают самую основную фунциональность (работа на уровне байтового потока)
Writer&Reader обеспечивают работу на уже более высоком уровне - на уровне примитивов или даже объектов. Также могут добавлять всякие плюшки, типа буферизации (например: BufferedReader).
А еще есть каналы (Channels) они уже сильно отличаются (реализованы в стиле юниксовых селекторов). за частую сейчас применяют только их, хотя в некоторых случаях от них проблем больше чем пользы (неправильно выбирают технологию под задачу)
[B]ромик0:[/B] Cколько получают здешние модераторы?
[B]pu4koff:[/B] У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запись/чтение из реестра muham33 Помощь студентам 2 05.01.2013 22:38
Чтение\Запись из файла vlados007 Общие вопросы C/C++ 1 10.03.2012 04:15
Чтение и запись в файл. Ky3Heu, Помощь студентам 0 01.01.2010 12:24
Чтение и запись в файл deagle05 Общие вопросы C/C++ 3 22.12.2009 01:11
Запись и чтение файла... Altera Общие вопросы Delphi 5 06.05.2008 20:22


15:41.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.