Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 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) они уже сильно отличаются (реализованы в стиле юниксовых селекторов). за частую сейчас применяют только их, хотя в некоторых случаях от них проблем больше чем пользы (неправильно выбирают технологию под задачу)
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



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