Java网络编程TCP实现文件上传功能

 更新时间:2021年07月04日 11:13:11   作者:跑起来要带风!  
这篇文章主要为大家详细介绍了Java网络编程TCP实现文件上传功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Java网络编程TCP实现文件上传的具体代码,供大家参考,具体内容如下

上一篇博客,用网络编程TCP 实现聊天,这次实现文件上传。

客户端:

package com.kuang.lesson02;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;

//客户端
public class TcpClientDemo2 {
    public static void main(String[] args) throws Exception {
        //1、创建一个Socket连接
        Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),9000);
        //2、创建一个输出流
        OutputStream os = socket.getOutputStream();
        //3、读取文件
        FileInputStream fis = new FileInputStream(new File("sendFile.jpg"));
        //4、写出文件
        byte[] buffer = new byte[1024];
        int len;
        while ((len=fis.read(buffer))!=-1) {
            os.write(buffer,0,len);
        }

        //通知服务器,我已经结束了
        socket.shutdownOutput();

        //确定服务器接收完毕,才能断开连接
        InputStream inputStream = socket.getInputStream();
        //String byte[]
        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        byte[] buffer2 = new byte[1024];
        int len2;
        while ((len2=inputStream.read(buffer2))!=-1) {
            baos.write(buffer2,0,len2);
        }

        System.out.println(baos.toString());


        //5、关闭资源
        fis.close();
        os.close();
        socket.close();
    }
}

服务端:

package com.kuang.lesson02;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

//服务端
public class TcpServerDemo02 {
    public static void main(String[] args) throws Exception {
        //1、创建服务
        ServerSocket serverSocket = new ServerSocket(9000);
        //2、监听客户端的连接
        //阻塞式监听,会一直等待客户端连接
        Socket socket = serverSocket.accept();
        //3、获取输入流
        InputStream is = socket.getInputStream();
        //4、文件输出
        FileOutputStream fos = new FileOutputStream(new File("receive.jpg"));
        byte[] buffer = new byte[1024];
        int len;
        while ((len=is.read(buffer))!=-1) {
            fos.write(buffer,0,len);
        }

        //通知客户端我接收完毕
        OutputStream os = socket.getOutputStream();
        os.write("我接收完毕了,你可以断开了".getBytes());

        //5、关闭资源
        fos.close();
        is.close();
        socket.close();
        serverSocket.close();
    }

}

运行结果:

1、首先可以发现目录下只有要上传的文件sendFile.jsp

2、运行服务端,创建服务,可以发现一直在运行

3、运行客户端,文件上传,可以发现目录下多了个上传到服务端的文件receive.jpg,同时接收到了服务端发送来的消息。

4、打开两个文件,可以发现相同

网络编程实现文件上传就简单介绍到这里了!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 基于Spring Boot不同的环境使用不同的配置方法

    基于Spring Boot不同的环境使用不同的配置方法

    下面小编就为大家分享一篇基于Spring Boot不同的环境使用不同的配置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Spring中的@Transactional注解使用详解

    Spring中的@Transactional注解使用详解

    这篇文章主要介绍了Spring中的@Transactional注解使用详解,@Transactional 是一个注解,用于在 Spring 框架中管理事务的声明式事务管理机制,它可以应用于方法或类级别,并指示方法或类在执行时应该被包装在一个事务中,需要的朋友可以参考下
    2024-01-01
  • java中stream的peek()用法详解

    java中stream的peek()用法详解

    这篇文章主要介绍了java中stream的peek()用法详解,peek的作用是
    改变元素的内部状态,对每个object执行 saveInfomation(object, params),然后把结果收集到一个 List 里,这里涉及到了最终操作,需要的朋友可以参考下
    2024-01-01
  • mybatis时间范围查询代码示例

    mybatis时间范围查询代码示例

    这篇文章主要给大家介绍了关于mybatis时间范围查询的相关资料,在项⽬中避免不了要⽤到时间范围查询,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • Spring jackson原理及基本使用方法详解

    Spring jackson原理及基本使用方法详解

    这篇文章主要介绍了Spring jackson原理及基本使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • IntelliJ IDEA 2022.2最新版本激活教程(亲测可用版)永久激活工具分享

    IntelliJ IDEA 2022.2最新版本激活教程(亲测可用版)永久激活工具分享

    Jetbrains官方发布了 IntelliJ IDEA2022.2 正式版,每次大的版本更新,都会有较大的调整和优化,除本次更新全面拥抱 Java 17 外,还有对IDE UI界面,安全性,便捷性等都做了调整和优化完善,用户体验提升不少,相信后面会有不少小伙伴跟着更新
    2022-08-08
  • java采用中文方式显示时间的方法

    java采用中文方式显示时间的方法

    这篇文章主要介绍了java采用中文方式显示时间的方法,实例分析了java时间操作及字符串转换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 如何在springMVC的controller中获取request

    如何在springMVC的controller中获取request

    这篇文章主要介绍了如何在springMVC的controller中获取request,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Spring Boot如何使用HikariCP连接池详解

    Spring Boot如何使用HikariCP连接池详解

    这篇文章主要给大家介绍了关于Spring Boot如何使用HikariCP连接池的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用springboot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • java实现在pdf模板的指定位置插入图片

    java实现在pdf模板的指定位置插入图片

    这篇文章主要为大家详细介绍了java如何实现在pdf模板的指定位置插入图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10

最新评论