引用した質問は、使用している UDP チャネルとは異なる TCP チャネルに関するものです。
TCP はバイト指向です (つまり、TCP 層には「メッセージ」はありません。TCP は単一のバイト ストリームであり、ストリームを「メッセージ」に分割することはアプリケーションの問題です)。アプリケーションは、バイトストリームを処理してメッセージを抽出する必要があります。ホストは TCP チャネルにいくつかのバイトを書き込むことができ、その後さらにバイトを書き込みます。他のホストは、それらが 2 つ (またはそれ以上) の異なる操作で書き込まれたのか、1 つの操作で書き込まれたのかわかりません。他のホストは、送信されたのと同じ順序でバイトを読み取るだけです。
一方、UDP はデータグラム指向です。あるホストからいくつかのバイト (データグラム) を送信すると、他のホストがそのデータグラムを受信します。データグラムはマージも分割もされません (ただし、失われる可能性があります)。DatagramChannel.readは、正確に 1 つのデータグラムを返します。すべてのメッセージが UDP データグラムに収まる場合、バッファを保持する必要はありません。
ただし、複数の UDP データグラムで送信されるメッセージがある場合は、元のメッセージを再構築するためにバッファーが必要になります。また、メッセージの順序 (UDP データグラムはネットワークによって並べ替えられる可能性があるため) とデータグラムの欠落 (UDP は信頼できないため)にも注意する必要があります。