Java基于Socket的文件传输实现方法
本篇攻略将介绍如何使用Java基于Socket实现文件传输的方法。通过该方法,可以实现发送方向接收方快速传输文件的目的。
准备工作
在进行文件传输前,需要准备的工作如下:
- 两台运行Java的计算机,分别充当发送方和接收方。
- 已处于同一网络下。
- 具备Java编程能力。
实现步骤
- 创建发送方和接收方的Socket对象。
//发送方
Socket socket = new Socket("接收方IP地址", 接收方端口号);
//接收方
ServerSocket serverSocket = new ServerSocket(接收方端口号);
Socket socket = serverSocket.accept();
- 使用IO流读取文件并传输。
//发送方
File file = new File("传输文件的路径");
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
dos.write(buffer, 0, len);
}
//接收方
DataInputStream dis = new DataInputStream(socket.getInputStream());
FileOutputStream fos = new FileOutputStream("接收文件的路径");
byte[] buffer = new byte[1024];
int len;
while ((len = dis.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
- 关闭连接与IO流。
//发送方
dos.close();
fis.close();
socket.close();
//接收方
dis.close();
fos.close();
socket.close();
serverSocket.close();
示例
以下是一个简单的发送方代码示例。
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.Socket;
public class SendFile {
public static void main(String[] args) throws IOException {
String serverIP = "192.168.1.100";//接收方IP地址
int serverPort = 8888;//接收方端口号
String filePath = "test.txt";//传输文件的路径
//创建Socket对象
Socket socket = new Socket(serverIP, serverPort);
//发送文件
File file = new File(filePath);
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
dos.write(buffer, 0, len);
}
dos.close();
fis.close();
socket.close();
}
}
以下是一个简单的接收方代码示例。
import java.io.DataInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class ReceiveFile {
public static void main(String[] args) throws IOException {
int serverPort = 8888;//接收方端口号
String savePath = "result.txt";//接收文件的路径
//创建ServerSocket对象
ServerSocket serverSocket = new ServerSocket(serverPort);
//等待连接请求
System.out.println("等待连接请求...");
Socket socket = serverSocket.accept();
System.out.println("连接成功!");
//接收文件并保存
DataInputStream dis = new DataInputStream(socket.getInputStream());
FileOutputStream fos = new FileOutputStream(savePath);
byte[] buffer = new byte[1024];
int len;
while ((len = dis.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
dis.close();
fos.close();
socket.close();
serverSocket.close();
System.out.println("传输完成!");
}
}
以上示例代码仅供参考,具体实现方式可以根据实际需求进行适当修改。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java基于Socket的文件传输实现方法 - Python技术站