2016-05-11 7 views
1

Thisポストに "ベース64エンコーディングは何のために使用されていますか?"言う:ネットワークを介して生のバイトを送信します。悪い?

あなたがネットワーク経由で出荷したいいくつかのバイナリデータを持っている場合は、あなたは、一般的にちょうどビットをストリーミングすることによってそれを行うと、生の形式のワイヤ上でバイトをしていません。なぜですか?一部のメディアはストリーミングテキスト用に作成されているためです。いくつかのプロトコルはバイナリデータを制御文字(モデムのようなもの)として解釈したり、バイナリデータが不正になる可能性があります。その理由は、基本的なプロトコルが特殊文字の組み合わせを入力したと考えるかもしれないからですエンディング)。

Javaでソケットを使用して、ネットワークを介してバイナリデータを送信するのに苦労しました。そして、私が知っている限り、ネットワーク上でバイナリデータを送信するのは非常に一般的です。特に、大きなデータがある場合は特にそうです。なぜなら、TCPヘッダーなどを含んでいるために、バイナリデータが間違って解釈される理由がわかりません。

SOAP MTOMはネットワーク経由でバイナリデータも送信します。

私は何かを誤解していますか?このポストは多くのアップフォートを持ち、受け入れられているので、私はイライラしています。

答えて

2

あなたがリンクしている回答は間違っていないので、明示的にいくつかの例を挙げておきます。答えは、同様の引用である:

一部のメディアがはバイト単位でテキスト

ソケットの契約をストリーミングするために作られているので、彼らはどのような彼らの輸送を気にしません。これは、上位レベルのプロトコル、またはそれらが送信するメッセージ形式です。

このバイナリデータは、そのようなプロトコルやフォーマットのエンベロープで包まれて大混乱を招くことがあります。イメージバイトの(<)文字未満は完全に有効ですが、XMLメッセージで使用されるとXMLを破棄します。制御文字のような他の文字は、プロトコルハンドラによってどのくらいデータが解釈されるかに影響を与える可能性があります。

base64は、バイナリデータを他の方法では安全でない場合に安全な転送方法でラップするために使用されます。

+0

私はあなたの答えを理解していますが、バイナリデータ転送のためには常にのようなbase64(または他のエンコーディング)が必要です。 XMLのような読取り可能な形式でデータを必要としない場合は、httpプロトコルでビットを送信するように保存することもできます。 – Lars

+0

ええ、あなたはそのような答えを解釈することができます_ _ "base64は常に確実にエンコードする" _、そしてそれは愚かな答えです、私は同意します。 – CodeCaster

関連する問題