java 局域网文件传输
时间: 2024-01-14 13:21:30 浏览: 82
java-局域网文件传输
3星 · 编辑精心推荐
Java可以通过使用Socket编程实现局域网文件传输。以下是一个简单的示例代码:
```java
import java.io.*;
import java.net.*;
public class FileTransferServer {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(1234);
System.out.println("等待客户端连接...");
Socket socket = serverSocket.accept();
System.out.println("客户端已连接");
// 创建输入流,用于接收文件
InputStream inputStream = socket.getInputStream();
DataInputStream dataInputStream = new DataInputStream(inputStream);
// 读取文件名和文件大小
String fileName = dataInputStream.readUTF();
long fileSize = dataInputStream.readLong();
System.out.println("接收文件:" + fileName + ",大小:" + fileSize + "字节");
// 创建输出流,用于保存文件
FileOutputStream fileOutputStream = new FileOutputStream(fileName);
// 创建缓冲区
byte[] buffer = new byte[4096];
int bytesRead;
long totalBytesRead = 0;
// 从输入流中读取数据,并写入输出流中保存文件
while ((bytesRead = dataInputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, bytesRead);
totalBytesRead += bytesRead;
}
System.out.println("文件接收完成,总共接收:" + totalBytesRead + "字节");
// 关闭流和连接
fileOutputStream.close();
dataInputStream.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
```java
import java.io.*;
import java.net.*;
public class FileTransferClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("服务器IP地址", 1234);
// 创建输出流,用于发送文件
OutputStream outputStream = socket.getOutputStream();
DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
// 选择要发送的文件
File file = new File("文件路径");
String fileName = file.getName();
long fileSize = file.length();
// 发送文件名和文件大小
dataOutputStream.writeUTF(fileName);
dataOutputStream.writeLong(fileSize);
System.out.println("发送文件:" + fileName + ",大小:" + fileSize + "字节");
// 创建输入流,用于读取文件内容
FileInputStream fileInputStream = new FileInputStream(file);
// 创建缓冲区
byte[] buffer = new byte[4096];
int bytesRead;
long totalBytesRead = 0;
// 从输入流中读取数据,并通过输出流发送文件内容
while ((bytesRead = fileInputStream.read(buffer)) != -1) {
dataOutputStream.write(buffer, 0, bytesRead);
totalBytesRead += bytesRead;
}
System.out.println("文件发送完成,总共发送:" + totalBytesRead + "字节");
// 关闭流和连接
fileInputStream.close();
dataOutputStream.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
请注意,上述代码中的"服务器IP地址"和"文件路径"需要根据实际情况进行替换。服务器端代码监听1234端口,客户端代码连接到服务器的1234端口。在客户端代码中,选择要发送的文件并指定文件路径。
阅读全文