通过套接字发送文件可以使用Java的Socket和ServerSocket类来实现。下面是一个基本的示例代码:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
// 创建ServerSocket对象,指定端口号
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器已启动,等待客户端连接...");
// 监听客户端的连接请求
Socket socket = serverSocket.accept();
System.out.println("客户端已连接,开始接收文件...");
// 创建输入流,用于接收客户端发送的文件数据
BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
// 创建文件输出流,用于将接收的文件数据写入磁盘
FileOutputStream fos = new FileOutputStream("received_file.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
// 创建缓冲区
byte[] buffer = new byte[1024];
int bytesRead;
// 从输入流中读取数据,并写入输出流
while ((bytesRead = bis.read(buffer)) != -1) {
bos.write(buffer, 0, bytesRead);
}
// 关闭流
bos.close();
bis.close();
socket.close();
serverSocket.close();
System.out.println("文件接收完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
try {
// 创建Socket对象,指定服务器的IP地址和端口号
Socket socket = new Socket("服务器IP地址", 8888);
System.out.println("已连接服务器,开始发送文件...");
// 创建文件输入流,用于读取本地文件数据
FileInputStream fis = new FileInputStream("file_to_send.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
// 创建输出流,用于向服务器发送文件数据
BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
// 创建缓冲区
byte[] buffer = new byte[1024];
int bytesRead;
// 从输入流中读取数据,并写入输出流
while ((bytesRead = bis.read(buffer)) != -1) {
bos.write(buffer, 0, bytesRead);
}
// 关闭流
bos.flush();
bis.close();
socket.close();
System.out.println("文件发送完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上代码是一个简单的文件传输示例,服务器端监听指定端口,客户端连接服务器并发送文件数据。你可以根据实际需求进行修改和扩展。
领取专属 10元无门槛券
手把手带您无忧上云