写一个局域网传文件的代码
时间: 2023-05-26 21:02:28 浏览: 100
这里提供一个Java语言实现的局域网文件传输代码:
1. 接收端代码
```java
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class Receiver {
public static void main(String[] args) {
try {
// 创建ServerSocket对象,并监听端口
ServerSocket server = new ServerSocket(8888);
System.out.println("等待接收文件...");
// 阻塞,等待客户端发送文件
Socket socket = server.accept();
System.out.println("文件传输开始...");
// 创建输入流,从Socket中读取数据
DataInputStream dis = new DataInputStream(socket.getInputStream());
// 读取文件名和文件长度
String fileName = dis.readUTF();
long fileLength = dis.readLong();
System.out.println("文件名:" + fileName);
System.out.println("文件长度:" + fileLength);
// 创建输出流,将接收到的文件写入磁盘
FileOutputStream fos = new FileOutputStream(new File(fileName));
// 创建缓冲区并读取文件内容,写入到磁盘中
byte[] buffer = new byte[1024];
int length = 0;
while ((length = dis.read(buffer)) > 0) {
fos.write(buffer, 0, length);
}
// 关闭流和Socket
fos.close();
dis.close();
socket.close();
server.close();
System.out.println("文件传输完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
该代码创建了一个ServerSocket,并监听端口8888。当客户端连接上来时,使用DataInputStream从Socket中读取文件名和文件长度,并将接收到的文件写入磁盘中。
2. 发送端代码
```java
import java.io.*;
import java.net.Socket;
public class Sender {
public static void main(String[] args) {
try {
// 创建Socket对象并连接到目标主机
Socket socket = new Socket("192.168.0.10", 8888);
// 创建输出流,将文件发送到Socket中
File file = new File("D:/test.txt");
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
// 将文件名和长度写入Socket中
dos.writeUTF(file.getName());
dos.writeLong(file.length());
System.out.println("文件名:" + file.getName());
System.out.println("文件长度:" + file.length());
// 创建输入流并读取文件内容,发送到Socket中
FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[1024];
int length = 0;
while ((length = fis.read(buffer)) > 0) {
dos.write(buffer, 0, length);
}
// 关闭流和Socket
fis.close();
dos.close();
socket.close();
System.out.println("文件发送完成");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
该代码创建了一个Socket对象,并连接到指定的主机和端口。然后使用DataOutputStream将文件名和文件长度发送到Socket中,并将文件内容发送到Socket中。最后关闭流和Socket。
阅读全文