美文网首页
Java 基于tcp协议实现文件上传

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

作者: 平凡的柚子 | 来源:发表于2021-02-02 22:40 被阅读0次

服务端

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();

  }

}

最新2020整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等,需要获取这些内容的朋友请加Q君样:11604713672

相关文章

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

    服务端 客户端 最新2020整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,sp...

  • Java RPC

    Java 基于TCP协议实现的RPC简单示例 [文档] Java RPC.docx

  • java 基于TCP协议的文件上传

    参考文档 参考视频 1.代码功能 2.学习重点 3.客户端代码 4.服务器端代码

  • 细节随笔

    1.tftp 协议端口号69,属于TCP/IP传输协议,基于UDP协议而实现,传输应答模式,使用场景:小文件传输 ...

  • http请求流程

    1.简介 超文本传输协议 HTTP是一个基于TCP协议来传递数据(HTML 文件, 图片文件, 查询结果等 tcp...

  • FTP软件和OpenSHH软件区别

    FTP 软件基于TCP协议来传输文件,明文传输用户信息和数据 OpenSHH软件基于SSH协议来传输文件,数据加密

  • RPC接口与REST对比

    传输协议 RPC,可以基于TCP协议,也可以基于HTTP协议 REST,基于HTTP协议(在TCP协议之上进行封装...

  • Java socket

    Java Socket实现基于TCP和UDP多线程通信Java Socket编程

  • Java模拟post请求上传文件

    Java模拟post请求上传文件 Java代码实现/** * 模拟文件post上传 * @para...

  • 基于koa的前后端分离的socket.io使用

    1、websocket websocket是html5出的协议,它是基于TCP协议,利用http协议建立连接,实现...

网友评论

      本文标题:Java 基于tcp协议实现文件上传

      本文链接:https://www.haomeiwen.com/subject/xngcaktx.html