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日

相关文章

  • Java中的多态是什么?

    多态是指对象在不同的情况下可以表现出不同的形态。在 Java 中,多态是通过继承和接口实现的。在多态的理念下,我们可以通过父类或接口类型来引用子类或实现类对象。 一个常见的例子是动物,有猫、狗、鸟等各种动物。我们可以定义一个 Animal 类作为这些动物的父类。然后根据不同的情况实现出不同的子类: class Animal { public void spe…

    Java 2023年4月27日
    00
  • Spring mvc 接收json对象

    接收json对象是Spring mvc中比较常见的需求之一。下面我将为您详细讲解完整步骤。 1. 添加相关依赖 在pom.xml文件中添加以下依赖: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-da…

    Java 2023年5月26日
    00
  • Java hibernate延迟加载get和load的区别

    下面是详细讲解Java Hibernate延迟加载get和load的区别的攻略: 延迟加载的概念 Hibernate是一个开源的ORM(对象关系映射)框架,它提供了对象到关系数据库的映射服务,可以方便地操作数据库。对于大量数据的操作,Hibernate采用了延迟加载的机制,即只有在需要使用数据时才会从数据库中取出数据,以节省内存和网络资源。 Hibernat…

    Java 2023年5月19日
    00
  • FP-Growth算法的Java实现+具体实现思路+代码

    下面是“FP-Growth算法的Java实现+具体实现思路+代码”的完整攻略: FP-Growth算法简介 FP-Growth算法是一种常用的频繁项集挖掘算法,它利用了频繁项集的意义,并且能够高效地处理大规模数据集。FP-Growth算法通过将数据集压缩成一棵FP-Tree来完成频繁项集挖掘,其主要步骤包括: 构建FP-Tree; 抽取频繁项集。 FP-Gr…

    Java 2023年5月19日
    00
  • 详解spring Boot 集成 Thymeleaf模板引擎实例

    我来为你详细讲解“详解SpringBoot集成Thymeleaf模板引擎实例”的攻略。 概述 在SpringBoot应用中,Thymeleaf是一种流行的模板引擎,具有出色的可维护性和可扩展性。本文将详细介绍如何使用SpringBoot集成Thymeleaf模板引擎,帮助开发者快速地搭建Web应用,并在其中使用Thymeleaf实现模板渲染。 集成Thyme…

    Java 2023年5月15日
    00
  • Java实现简单的五子棋游戏示例代码

    一、介绍 五子棋是一种非常古老的中国传统游戏,它简单易懂,规则简单,同时又非常有趣,是大众化的棋类游戏之一。本文将介绍如何用 Java 语言实现一个简单的五子棋游戏,让小伙伴们体验一下自己编写游戏的快感。 二、准备工作 开发五子棋游戏需要熟悉 Java 语言的基础代码编写,同时需要掌握一些基础的图形界面编程知识,推荐使用 Swing 或 JavaFX 进行图…

    Java 2023年5月19日
    00
  • javaweb实现注册登录页面

    实现一个Java Web注册登录页面一般需要以下步骤: 设计数据库 注册登录页面需要第一步是设计数据库,在数据库中创建用户表。用户表包括必需的字段,比如用户名、密码等等。 示例: CREATE TABLE users ( id int(11) NOT NULL AUTO_INCREMENT, username varchar(45) NOT NULL, pa…

    Java 2023年6月15日
    00
  • 网页教案,针对初学者的教案

    网页教案,针对初学者的教案 背景介绍 越来越多的人开始学习网页制作,但对于初学者来说,网页制作可能会显得困难和复杂。因此,为初学者提供一份全面的、详细的网页教案是非常必要的。 教案具体内容 第一部分:HTML基础 在这一部分中,我们将介绍基础的HTML标签和语法。主要包括以下内容: HTML文件结构 标题和段落标签 列表标签 链接标签 图片标签 第二部分:C…

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