Java Socket实现文件传输示例代码

Java Socket实现文件传输是一项很有用的功能,它可以用于将文件在不同的计算机之间传输。下面将会提供一份完整的攻略,帮助你实现Java Socket实现文件传输。

一、创建Socket

在Java中,可以通过Socket类来创建Socket。使用Socket类可以连接到远程计算机上的Socket服务端程序。这个服务端程序可以接收客户端发送的数据,从而实现客户端与服务端之间的通信。

在创建Socket时,需要指定连接的IP地址和端口号。示例代码如下:

Socket socketClient = new Socket("192.168.1.100", 1234);
InputStream inputStream = socketClient.getInputStream();
OutputStream outputStream = socketClient.getOutputStream();

上述代码创建了一个连接到IP地址为“192.168.1.100”的计算机的Socket,并且指定了连接的端口为1234。

二、文件传输

在创建Socket的基础上,可以在两个计算机之间进行数据传输。文件传输的具体实现方式可以使用流的方式实现。

例如,如果要从本地计算机向连接的远程计算机上发送文件,可以使用以下代码:

File file = new File("test.txt");
FileInputStream fileInputStream = new FileInputStream(file);
byte[] buffer = new byte[1024];
int length;
while ((length = fileInputStream.read(buffer)) > 0) {
    outputStream.write(buffer, 0, length);
}
fileInputStream.close();

上述代码创建了一个文件输入流,将文件“test.txt”中的数据读取为字节数组,将其写入到输出流中,从而实现了文件的传输。

如果要从连接的远程计算机上接收文件,可以使用以下代码:

File file = new File("received.txt");
FileOutputStream fileOutputStream = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
    fileOutputStream.write(buffer, 0, length);
}
fileOutputStream.close();

上述代码创建了一个文件输出流,将从输入流中读取的文件数据写入到文件“received.txt”中,从而实现了文件的接收。

三、完整示例代码

以下是一个完整的Java Socket实现文件传输的示例代码:

服务端代码:

public class Server {
    public static void main(String[] args) throws Exception {
        ServerSocket serverSocket = new ServerSocket(1234);
        Socket socket = serverSocket.accept();
        while (true) {
            InputStream inputStream = socket.getInputStream();
            OutputStream outputStream = socket.getOutputStream();
            File file = new File("received.txt");
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            byte[] buffer = new byte[1024];
            int length;
            while ((length = inputStream.read(buffer)) > 0) {
                fileOutputStream.write(buffer, 0, length);
            }
            fileOutputStream.close();
            inputStream.close();
            outputStream.close();
            socket.close();
        }
    }
}

客户端代码:

public class Client {
    public static void main(String[] args) throws Exception {
        Socket socketClient = new Socket("192.168.1.100", 1234);
        InputStream inputStream = socketClient.getInputStream();
        OutputStream outputStream = socketClient.getOutputStream();
        File file = new File("test.txt");
        FileInputStream fileInputStream = new FileInputStream(file);
        byte[] buffer = new byte[1024];
        int length;
        while ((length = fileInputStream.read(buffer)) > 0) {
            outputStream.write(buffer, 0, length);
        }
        fileInputStream.close();
        inputStream.close();
        outputStream.close();
        socketClient.close();
    }
}

以上代码可以实现从客户端向服务端发送文件,或者从服务端向客户端发送文件。运行该示例代码即可实现Java Socket实现文件传输功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Socket实现文件传输示例代码 - Python技术站

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

相关文章

  • SpringBoot实现统一封装返回前端结果集的示例代码

    下面我来详细讲解如何实现SpringBoot的统一封装返回前端结果集的示例代码的完整攻略。 1. 为什么需要统一封装返回结果集 在我们使用SpringBoot开发Web应用时,通常经常会用到Controller来处理请求。Controller的主要作用是接收请求,处理业务逻辑,然后将结果返回给前端。通常情况下,我们在Controller方法中使用如下方式处理…

    Java 2023年5月26日
    00
  • Java中BigDecimal类的简单用法

    Java中BigDecimal类的简单用法 什么是BigDecimal? BigDecimal是Java中的一个数学类,它主要用于处理高精度的浮点数运算,并避免了普通float和double数值的精度损失问题。在需要极高精度计算的场景中,BigDecimal可以起到至关重要的作用。 如何使用BigDecimal? 创建BigDecimal对象 我们可以使用B…

    Java 2023年5月26日
    00
  • Java超详细介绍抽象类与接口的使用

    Java超详细介绍抽象类与接口的使用 在Java语言中,抽象类和接口是两种重要的语法结构,它们可以用来描述一类对象所共有的特性和行为。本文将从定义、特点、使用场景、实现方式等多个方面,超详细地介绍抽象类和接口在Java中的使用。 抽象类的定义和特点 抽象类是一种特殊的类,它不能直接被实例化,只能用来作为其他类的基类。抽象类中包含了多个方法的定义,这些方法可以…

    Java 2023年5月26日
    00
  • 常见的Java Agent有哪些?

    常见的Java Agent有如下几种: ByteBuddy:基于Java字节码增强库,可以实现类加载的字节码增强。 ASM:一个轻量级Java字节码操作库,ASM可以动态生成类、方法或 Field,或者对现有类进行操作。 Javassist:Java字节码操作库,它可以在字节码层面上修改Java程序。 Instrument:Java的一个API,可以在运行时…

    Java 2023年5月11日
    00
  • springboot @Async 注解如何实现方法异步

    SpringBoot提供了@Async注解来实现方法异步,在这个注解的加持下,这些被注解的方法将执行在单独的线程中。这可以减少应用程序的响应时间,提高应用程序的吞吐量。 下面,我们来实现一个简单的示例来说明@Async注解的使用方法。 第一步,导入必须的依赖 在pom.xml文件中,我们需要导入spring-boot-starter-web和spring-b…

    Java 2023年5月26日
    00
  • Java FileUploadUtil工具类详解

    Java FileUploadUtil工具类详解 简介 FileUploadUtil是一个Java的上传文件工具类,提供了一些上传文件操作的辅助方法,如将上传的文件保存到服务器上指定的路径,获取上传文件的名称和大小等信息等。 使用方法 1. 导入工具类 首先需要将FileUploadUtil类导入到自己的项目中。 2. 初始化上传配置 在使用之前,需要初始化…

    Java 2023年5月19日
    00
  • 新手小白看过来学JAVA必过IO流File字节流字符流

    好的。首先,我建议让读者先了解一下Java中IO流的基本概念。 什么是Java中的IO流? Java中的IO流是一种用于处理输入输出功能的类集合,它们分为字节流和字符流两种。其中字节流用于处理二进制数据,而字符流则用于处理文本数据。 具体来说,字节流主要包括InputStream和OutputStream两个类,字符流则包括Reader和Writer两个类。…

    Java 2023年5月26日
    00
  • Spring、SpringMVC和SpringBoot的区别及说明

    下面是关于“Spring、SpringMVC和SpringBoot的区别及说明”的完整攻略。 Spring、SpringMVC和SpringBoot的介绍 Spring Spring是一个企业级框架,主要用于开发Java应用程序。Spring框架提供了大量的功能,如依赖注入、面向切面编程、JDBC等等。Spring框架被设计为一个轻量级的框架,能够集成已有的…

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