java使用Socket实现文件上传功能

 更新时间:2022年02月24日 11:47:07   作者:꧁এ悲宸๓₯㎕  
这篇文章主要为大家详细介绍了java使用Socket实现文件上传功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了使用Socket实现文件上传功能的具体代码,供大家参考,具体内容如下

文件上传的步骤:

服务器端步骤:

1、创建ServerSocket

2、调用accept获得客户端Socket

3、定义字节数组

4、创建文件输出流,获得客户端输入流

5、循环读取输入流的字节,写入到文件输出流

客户端步骤:

1、创建Socket

2、获得socket对象输出流

3、创建文件输入流

4、循环读取文件输入流字节,写入到输出流

代码实现:

服务器端:

public class FileServer {
    public static final int PORT = 8888;
    public static final String PATH = "D:\\upload\\";

    public void start(){
        System.out.println("start...");
        try (   //创建服务器端对象
                ServerSocket server = new ServerSocket(PORT);){
            while (true){
                Socket socket = server.accept();
                try (   //创建文件输出流和网络输入流
                        DataInputStream in = new DataInputStream(socket.getInputStream());
                        //读取哭护短发来的文件名,创建文件输出流
                        FileOutputStream out = new FileOutputStream(PATH+in.readUTF())){
                        int len = 0;
                        byte[] buffer = new byte[1024];
                        while ((len = in.read(buffer)) != -1){
                            out.write(buffer,0,len);
                        }
                    System.out.println("服务器保存完毕!");
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        new FileServer().start();
    }

}

客户端:

public class FileClient {
    /**
     * 发送文件
     */
    public void sendFile(String ip,int port,String path){
        File file = new File(path);
        try (
            //创建连接,创建文件输入流,网络输出流
            Socket socket = new Socket(ip,port);
            InputStream in = new FileInputStream(path);
            DataOutputStream out = new DataOutputStream(socket.getOutputStream())){
            //先发送文件给服务器
            out.writeUTF(file.getName());
            out.flush();
            //读取本地文件,写入到网络输出流中
            int len = 0;
            byte[] buffer = new byte[1024];
            while ((len  = in.read(buffer)) != -1){
                out.write(buffer,0,len);
            }
            System.out.println("客户端发送完毕!");
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        new FileClient().sendFile("192.168.31.226",8888,"C:\\Users\\admin\\Desktop\\C.txt");
    }
}

实现效果:

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

相关文章

  • 详解SpringCloud Zuul过滤器返回值拦截

    详解SpringCloud Zuul过滤器返回值拦截

    Zuul作为网关服务,是其他各服务对外中转站,通过Zuul进行请求转发。这篇文章主要介绍了详解SpringCloud Zuul过滤器返回值拦截,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 详解JAVA 字节流和字符流

    详解JAVA 字节流和字符流

    这篇文章主要介绍了JAVA 字节流和字符流的的相关资料,文中讲解非常的细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • 使用svn管理Maven项目的方法步骤

    使用svn管理Maven项目的方法步骤

    这篇文章主要介绍了使用svn管理Maven项目的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 解决tomcat发布工程后,WEB-INF/classes下文件不编译的问题

    解决tomcat发布工程后,WEB-INF/classes下文件不编译的问题

    这篇文章主要介绍了解决tomcat发布工程后,WEB-INF/classes下文件不编译的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 基于JPA中的@Basic注解详解

    基于JPA中的@Basic注解详解

    这篇文章主要介绍了JPA中的@Basic注解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • SpringBoot使用Apache Tika检测敏感信息

    SpringBoot使用Apache Tika检测敏感信息

    Apache Tika 是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Apache Tika检测敏感信息从而实现数据泄露防护吧
    2025-01-01
  • idea配置多环境启动方式dev、test、prod

    idea配置多环境启动方式dev、test、prod

    这篇文章主要介绍了idea配置多环境启动方式dev、test、prod,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 详解spring boot中使用JdbcTemplate

    详解spring boot中使用JdbcTemplate

    JdbcTemplate 是在JDBC API基础上提供了更抽象的封装,并提供了基于方法注解的事务管理能力。 通过使用SpringBoot自动配置功能并代替我们自动配置beans,下面给大家介绍spring boot中使用JdbcTemplate相关知识,一起看看吧
    2017-04-04
  • Spring RestTemplate远程调用过程

    Spring RestTemplate远程调用过程

    这篇文章主要介绍了Spring RestTemplate远程调用过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 如何利用Java实现MySQL的数据变化监听

    如何利用Java实现MySQL的数据变化监听

    在高并发和大数据环境下,实时获取 MySQL 数据库的增量变化对数据同步、数据分析、缓存更新等场景至关重要,下面我们就来看看如何通过Java实现MySQL的数据变化监听吧
    2025-02-02

最新评论