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

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

DDD
Release: 2024-11-05 08:33:02
Original
545 people have browsed it

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

Sending and Receiving Binary Files over Java Sockets

In this discussion, we delve into the intricacies of sending and receiving files in binary format (byte arrays) over Java sockets.

Let's analyze the server implementation first. The server listens on port 4444 and reads data from the client using the read() method. This method requires a predefined buffer size, which in this case is set to 1024 bytes. However, this approach has a limitation. If the file being transferred is larger than the buffer size, only part of the file will be received, leading to data corruption.

The client code, on the other hand, attempts to write the contents of the file "test.xml" to the output stream using the write() method. However, before sending the data, it's crucial to determine the size of the file. If the file size exceeds the maximum integer value (Integer.MAX_VALUE), an error will occur.

To resolve these issues and ensure reliable file transfer, a more robust approach is recommended. The code below demonstrates the correct way to copy a byte stream using a buffer:

<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>
Copy after login

By using a buffer and looping through the data until the end of the stream is reached, we can efficiently handle files of any size.

The above is the detailed content of How to Reliably Send and Receive Binary Files Over Java Sockets?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template