Подтвердить что ты не робот

Сокеты Java: DataOutputStream или OutputStream?

Я все еще относительно новичок в сокетах, и я не видел никакой информации по этому вопросу.

Чтобы записать в подключенный сокет, вы можете использовать

socket.getOutputStream().write

Или создайте новый DataOutputStream из сокета OutputStream и напишите на него.

  • Что считается "хорошей практикой", используя DataOutputStream или OutputStream? Большинство примеров, которые я нашел в Интернете, используют DataOutputStream (для отправки строк, например, в двухстороннем чате).
  • Есть ли какие-либо преимущества или недостатки в использовании DataOutputStream над OutputStream?
  • Есть ли разница в производительности, которая заметно между этими двумя, когда, например, отправляет файлы?
4b9b3361

Ответ 1

DataOutputStream гарантирует, что данные будут отформатированы независимо от платформы. Это большая выгода. Это гарантирует, что сторона с другой стороны сможет ее прочитать. Между ними нет существенной разницы в производительности.

Вы должны использовать OutputStream, только если вы передаете необработанные двоичные данные.

Ответ 2

Используйте DataOutputStream, если вам нужны дополнительные API. Если вы этого не сделаете, нет смысла. Но вы всегда должны обертывать выходной поток сокета в BufferedOutputStream, если вы делаете небольшие записи, и flush(), когда это необходимо, например, прежде чем вы прочитаете сокет, например.

Ответ 3

Только сейчас я узнал разницу между dataoutstream и outputstreamwriter при работе с SOAP-сервисами... Я попытался передать арабские данные через XML запроса, но в ответе XML я получаю некоторые нежелательные символы вместо арабских данных то я попытался кодировать (UTF-8) запрос, но нет такого метода для кодирования в DataOutputStream, где вы можете кодировать запрос в OutputStreamWriter перед отправкой запроса. OutputStreamWriter out = новый OutputStreamWriter (con.getOutputStream(), "UTF-8" ); out.write(inputXML);