JAVA利用UDP通信实现一个发送端和接收端传输文件的功能,要求发送端不断读取本地文件并把读取的文件内容通过UDP传输给接收端,接收端把收到的内容写入文件。
时间: 2024-03-19 14:45:21 浏览: 55
用java实现UDP通信
4星 · 用户满意度95%
好的,下面是JAVA利用UDP通信实现一个发送端和接收端传输文件的示例代码。在这个示例中,发送端会不断读取本地的文件,并把读取的文件内容通过UDP传输给接收端,接收端会把收到的内容写入到本地文件中。
发送端代码:
```java
import java.io.*;
import java.net.*;
public class FileSender {
public static void main(String[] args) throws IOException {
String filename = "test.txt";
String ip = "localhost";
int port = 8888;
DatagramSocket socket = new DatagramSocket();
// 读取文件并传输数据
File file = new File(filename);
FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
DatagramPacket packet = new DatagramPacket(buffer, len, InetAddress.getByName(ip), port);
socket.send(packet);
}
// 关闭Socket和文件流
fis.close();
socket.close();
}
}
```
接收端代码:
```java
import java.io.*;
import java.net.*;
public class FileReceiver {
public static void main(String[] args) throws IOException {
String filename = "test.txt";
int port = 8888;
DatagramSocket socket = new DatagramSocket(port);
// 接收数据并写入文件
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
FileOutputStream fos = new FileOutputStream(filename);
while (true) {
socket.receive(packet);
int len = packet.getLength();
fos.write(buffer, 0, len);
if (len < buffer.length) {
break;
}
}
// 关闭Socket和文件流
fos.close();
socket.close();
}
}
```
在这个示例中,发送端和接收端都是通过`DatagramSocket`创建的UDP套接字,然后通过`DatagramPacket`将数据打包并发送到对方的套接字上。发送端通过`FileInputStream`读取本地文件内容,并通过UDP传输给接收端,接收端通过`FileOutputStream`将接收到的数据写入本地文件中。
需要注意的是,UDP协议存在数据的丢失和乱序等问题,因此在实际应用中需要加入一些数据的校验和恢复机制,以保证数据传输的可靠性和正确性。
阅读全文