Java基于Socket的文件传输实现方法

Java基于Socket的文件传输实现方法

本篇攻略将介绍如何使用Java基于Socket实现文件传输的方法。通过该方法,可以实现发送方向接收方快速传输文件的目的。

准备工作

在进行文件传输前,需要准备的工作如下:

  1. 两台运行Java的计算机,分别充当发送方和接收方。
  2. 已处于同一网络下。
  3. 具备Java编程能力。

实现步骤

  1. 创建发送方和接收方的Socket对象。
//发送方
Socket socket = new Socket("接收方IP地址", 接收方端口号);

//接收方
ServerSocket serverSocket = new ServerSocket(接收方端口号);
Socket socket = serverSocket.accept();
  1. 使用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);
}
  1. 关闭连接与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技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • java实现二维数组转置的方法示例

    针对”java实现二维数组转置的方法示例”,我为您提供完整攻略如下: 一、题目分析 二维数组转置是将行和列的位置互换,即行变为列,列变为行,其基本原理是通过两层循环,依次交换每一个元素。 二、Java实现方法 Java实现二维数组转置可以按以下步骤进行: 1.定义原始的二维数组: 我们先定义原始的二维数组,一般可以通过随机生成数或者手动初始化等方法来实现。 …

    Java 2023年5月26日
    00
  • 排查Java应用内存泄漏问题的步骤

    当Java应用使用内存过多、频繁抛出OutOfMemoryError异常时,可能会存在内存泄漏问题。以下是排查Java应用内存泄漏问题的一般步骤,供参考: 第一步,确认是否存在内存泄漏 内存泄漏是指内存占用数不断增长,直到应用崩溃。Java应用的内存占用通常分为两部分,一部分是堆内存,另一部分是非堆内存。可以通过以下方法确认是否存在内存泄漏问题: 使用jco…

    Java 2023年5月27日
    00
  • 浅谈Java代码的 微信长链转短链接口使用 post 请求封装Json(实例)

    这里给出详细的攻略。 1. 背景介绍 微信公众号开发中,经常会使用到微信接口进行开发,其中短链接转化也是很常见的操作。本篇文章主要介绍如何使用 Java 代码封装微信长链接转短链接接口,使用 post 请求,并将返回结果封装为 JSON 数据。 2. 实现步骤 2.1. 导入相关 jar 包 使用 HttpClient 可以方便地发送 post 请求,并获取…

    Java 2023年5月26日
    00
  • java编写全年考勤日历

    下面我将详细介绍如何用Java编写全年考勤日历的完整攻略。 1. 设计思路 基本思路是从一年的第一天开始,每一天都计算它是星期几,再根据周末、节假日等情况进行判断,最终输出考勤日历。这个思路分为以下几个步骤: 获取当前年份,以及这一年有多少天(平年365天,闰年366天) 从1月1日开始遍历每一天,计算当天是星期几 判断当天是否是周末,如果是周末则标记为“休…

    Java 2023年6月1日
    00
  • Java实战之课程在线学习系统的实现

    Java实战之课程在线学习系统的实现 系统需求分析与设计 在开始实现课程在线学习系统之前,我们首先需要进行系统需求分析与设计。在这个阶段中,我们需要明确系统的功能要求和设计系统所需的技术栈。 系统功能要求 在课程在线学习系统中,我们需要实现以下功能: 用户注册、登录和信息修改 用户课程的浏览、学习和评价 管理员添加、删除、修改课程信息 管理员管理用户信息和课…

    Java 2023年5月18日
    00
  • maven环境变量配置以及失败原因解析

    Maven是Java项目的构建工具,通过管理项目中的依赖、编译、测试等环节,快速构建出可部署的程序包。在使用Maven时,为了方便使用,需要配置Maven环境变量。本文将详细讲解Maven环境变量配置以及可能出现的失败原因解析。 环境变量配置 1. 下载Maven 首先需要从Maven官网下载Maven,我们选择下载最新版的Maven 3。下载完成后,解压到…

    Java 2023年5月20日
    00
  • Java基础-Java的体系结构

    Java的体系结构 Java的体系结构包含三个核心部分:JVM、JRE和JDK。其中JDK是对JRE的扩展,而JRE又是对JVM的扩展。 JVM JVM,即Java虚拟机,是Java平台的最核心部分。它是Java的运行环境,其作用是将Java字节码文件解释成能够在特定操作系统中运行的机器语言,并将其加载到内存中。 Java语言的跨平台特性正是由JVM所实现的…

    Java 2023年5月19日
    00
  • Java集合之Map接口的实现类精解

    Java集合之Map接口的实现类精解 Map是Java集合框架中的一个接口,它提供了一种将键值映射到值的集合,每个键最多只能映射到一个值。常见的实现类有HashMap、TreeMap、LinkedHashMap等。在本篇文章中,我们将详细讲解Map接口及其实现类的特点、使用方法和示例。 Map接口特点 Map接口是用于存储“键-值”对的集合,其中的键和值都是…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部