首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何通过套接字发送文件?Java

通过套接字发送文件可以使用Java的Socket和ServerSocket类来实现。下面是一个基本的示例代码:

  1. 服务器端代码:
代码语言:txt
复制
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();
        }
    }
}
  1. 客户端代码:
代码语言:txt
复制
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();
        }
    }
}

以上代码是一个简单的文件传输示例,服务器端监听指定端口,客户端连接服务器并发送文件数据。你可以根据实际需求进行修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券