ホームページ  >  記事  >  Java  >  Java ソケット経由でバイナリ ファイルを確実に送受信するにはどうすればよいですか?

Java ソケット経由でバイナリ ファイルを確実に送受信するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-05 08:33:02511ブラウズ

How to Reliably Send and Receive Binary Files Over Java Sockets?

Java ソケットを介したバイナリ ファイルの送受信

この説明では、バイナリ形式でのファイルの送受信の複雑さを詳しく掘り下げます (バイト配列) を Java ソケット経由で使用します。

最初にサーバーの実装を分析しましょう。サーバーはポート 4444 をリッスンし、read() メソッドを使用してクライアントからデータを読み取ります。このメソッドには、事前定義されたバッファ サイズが必要です。この場合、バッファ サイズは 1024 バイトに設定されています。ただし、このアプローチには制限があります。転送されるファイルがバッファ サイズより大きい場合、ファイルの一部のみが受信され、データの破損が発生します。

一方、クライアント コードはファイルの内容を書き込もうとします。 test.xml」を write() メソッドを使用して出力ストリームに追加します。ただし、データを送信する前に、ファイルのサイズを決定することが重要です。ファイル サイズが最大整数値 (Integer.MAX_VALUE) を超える場合、エラーが発生します。

これらの問題を解決し、信頼性の高いファイル転送を保証するには、より堅牢なアプローチをお勧めします。以下のコードは、バッファを使用してバイト ストリームをコピーする正しい方法を示しています。

<code class="java">int count;
byte[] buffer = new byte[8192]; // The buffer size can be adjusted as needed
while ((count = in.read(buffer)) > 0) {
    out.write(buffer, 0, count);
}</code>

バッファを使用し、ストリームの終わりに到達するまでデータをループすることにより、あらゆるファイルを効率的に処理できます。サイズ。

以上がJava ソケット経由でバイナリ ファイルを確実に送受信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。