TCP通讯协议,文件上传实现

//TCP通讯协议,服务端文件上传实现
    public static void socketClient(File file) {

        try (
                // 1. 创建流对象
                // 1.1 创建输入流,读取本地文件
                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
                // 2. 创建客户端套接字,写出到服务端
                // 2.1 创建客户端套接字
                Socket socket = new Socket("localhost", 6666);
                // 2.2 创建输出流,写出到服务端
                BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());) {
            // 3. 写出数据
            byte[] bytes = new byte[8 * 1024];
            int len;
            while ((len = bis.read(bytes)) != -1) {
                bos.write(bytes, 0, len);
                bos.flush();
            }
            System.out.println("文件发送完毕!");
        } catch (FileNotFoundException e1) {
            // TODO 日志
            e1.printStackTrace();
        } catch (IOException e2) {
            // TODO 日志
            e2.printStackTrace();
        }
    }
//TCP通讯协议,服务端文件上传实现    
public static void socketServer(File file) {
        System.out.println("服务器启动......");
        try (
              //1. 创建服务端Socket
               ServerSocket serverSocket = new ServerSocket(6666);
               //2. 建立链接
               Socket socketAccept = serverSocket.accept();
               //3. 创建流对象
               //3.1 获取输入流,读取文件数据
               BufferedInputStream bis = new BufferedInputStream(socketAccept.getInputStream());
               //3.2 创建输出流,保存到本地
               BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
         ) {
            //4. 读写数据
            byte[] bytes = new byte[8 * 1024];
            int len;
            while((len = bis.read(bytes)) != -1) {
                bos.write(bytes, 0, len);
            }
            System.out.println("上传的文件已保存!");
        } catch (IOException e) {
            // TODO 日志
            e.printStackTrace();
        }
        
    }
//测试
public static void main(String[] args) {
        File file = new File("D:\\demo\\TCP\\scoketServer.png");
        socketServer(file);
    }
File file = new File("D:/Downloads/壁纸/20200505.png");
        socketClient(file);

 

posted @ 2020-07-30 16:55  达摩院的BLOG  阅读(271)  评论(0编辑  收藏  举报