Java 基于tcp协议实现文件上传

 更新时间:2020年11月21日 09:10:09   作者:Hateyes  
这篇文章主要介绍了Java 基于tcp协议实现文件上传,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下

服务端

package lesson02;

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

/**
 * 服务端接收文件
 */
public class TcpServerDemo2 {

  public static void main(String[] args) throws IOException {
    //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();

  }

}

客户端

package 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"), 90000);
    //2、创建一个输出流
    OutputStream os = socket.getOutputStream();

    //3、读取文件
    FileInputStream fis = new FileInputStream(new File("toux.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();
    //Sting 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();

  }

}

以上就是Java 基于tcp协议实现文件上传的详细内容,更多关于Java 文件上传的资料请关注脚本之家其它相关文章!

相关文章

  • springmvc中RequestMappingHandlerAdapter与HttpMessageConverter的装配讲解

    springmvc中RequestMappingHandlerAdapter与HttpMessageConverter的

    今天小编就为大家分享一篇关于springmvc中RequestMappingHandlerAdapter与HttpMessageConverter的装配讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • 详解SpringMVC在IDEA中的第一个程序

    详解SpringMVC在IDEA中的第一个程序

    Spring MVC 属于Spring Framework的一部分,是一种Spring框架内置的MVC的实现。这篇文章主要介绍了SpringMVC在IDEA中的第一个程序,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Java SPI用法案例详解

    Java SPI用法案例详解

    这篇文章主要介绍了Java SPI用法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Eclipse中改变默认的workspace的方法及说明详解

    Eclipse中改变默认的workspace的方法及说明详解

    eclipse中改变默然的workspace的方法有哪几种呢?接下来脚本之家小编给大家介绍Eclipse中改变默认的workspace的方法及说明,对eclipse改变workspace相关知识感兴趣的朋友一起学习吧
    2016-04-04
  • Java设计模式之单例设计模式解析

    Java设计模式之单例设计模式解析

    这篇文章主要介绍了Java设计模式之单例设计模式解析,设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式,设计模式免去我们自己再思考和摸索,需要的朋友可以参考下
    2023-11-11
  • 重试框架Guava-Retry和spring-Retry的使用示例

    重试框架Guava-Retry和spring-Retry的使用示例

    spring-retry 和 guava-retry 工具都是线程安全的重试,能够支持并发业务场景的重试逻辑正确性,本文主要介绍了重试框架Guava-Retry和spring-Retry的使用示例,感兴趣的可以一下
    2023-09-09
  • 关于Spring中的@Configuration中的proxyBeanMethods属性

    关于Spring中的@Configuration中的proxyBeanMethods属性

    这篇文章主要介绍了关于Spring中的@Configuration中的proxyBeanMethods属性,需要的朋友可以参考下
    2023-07-07
  • Java设计模式之状态模式详解

    Java设计模式之状态模式详解

    Java 中的状态模式(State Pattern)是一种行为型设计模式,它允许对象在内部状态发生改变时改变其行为,本文将详细介绍 Java 中的状态模式,我们将从状态模式的概述、结构与实现、优缺点、适用场景等方面进行讲解,需要的朋友可以参考下
    2023-05-05
  • java实现微信小程序加密数据解密算法

    java实现微信小程序加密数据解密算法

    这篇文章主要为大家详细介绍了java实现微信小程序加密数据解密算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • IDEA配置静态资源热加载操作(Springboot修改静态资源不重启)

    IDEA配置静态资源热加载操作(Springboot修改静态资源不重启)

    这篇文章主要介绍了IDEA配置静态资源热加载操作(Springboot修改静态资源不重启),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10

最新评论