zoukankan      html  css  js  c++  java
  • java 网络编程(五)Socket多线程上传文件

    客户端:

    package cn.sasa.socketUploadFileDemo;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    
    public class SocketClientDemo {
    
        public static void main(String[] args) throws IOException {
            Socket socket = new Socket("127.0.0.1",8050);
            OutputStream output = socket.getOutputStream();
            
            FileInputStream inputFile = new FileInputStream("D:\sasa\Weixin.zip");
            byte[] buff = new byte[1024];
            int len = 0;
            while((len = inputFile.read(buff)) != -1) {
                output.write(buff,0,len);
            }
            //传完后告诉服务器上传完成,否则服务器会一直等待读取
            socket.shutdownOutput();
            
            InputStream input = socket.getInputStream();
            len = input.read(buff);
            System.out.println(new String(buff,0,len));
            
            socket.close();
            inputFile.close();
        }
    }

    服务端:

    package cn.sasa.socketUploadFileDemo;
    
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class ServerSocketDemo {
    
        public static void main(String[] args) throws IOException {
            ServerSocket server = new ServerSocket(8050);
            //一直监听
            while(true) {
                Socket clientSocket = server.accept();
                Thread th = new Thread(new UploadRunnable(clientSocket));
                th.start();
            }
        }
    
    }

    Runnable接口的实现类UploadRunnable.java,用于上传文件

    package cn.sasa.socketUploadFileDemo;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    
    public class UploadRunnable implements Runnable {
    
        private Socket clientSocket;
        public UploadRunnable(Socket socket) {
            this.clientSocket = socket;
        }
        @Override
        public void run() {
            try {
                InputStream input = clientSocket.getInputStream();
                File upload = new File("D:\upload");
                if(!upload.exists()) {
                    upload.mkdirs();
                }
                //文件命名
                String fileName = "sasa"+ System.currentTimeMillis()+".zip";
                FileOutputStream outputFile = new FileOutputStream(upload+File.separator+fileName);
                byte[] buff = new byte[1024];
                int len = 0;
                while((len = input.read(buff)) != -1) {
                    outputFile.write(buff,0,len);
                }
                OutputStream output = clientSocket.getOutputStream();
                output.write("上传完成".getBytes());
                outputFile.close();
                clientSocket.close();
            }catch(Exception ex) {
                ex.printStackTrace();
            }
        }
    
    }
  • 相关阅读:
    织梦首页/列表页/内容页直接获取软件模型本地下载地址
    织梦手机站关闭自动生成首页index.html
    织梦手机站搜索结果显示为电脑站的搜索结果模板的解决方法
    织梦生成栏目列表后,前台访问空白,0kb文件
    1006. 求和游戏
    1003. 二哥养细菌
    MySQL/mariadb知识点——安装篇(3)编译安装
    MySQL/mariadb知识点——安装篇(2)二进制安装
    MySQL/mariadb知识点——安装篇(1)yum安装
    Ansible—角色
  • 原文地址:https://www.cnblogs.com/SasaL/p/10304296.html
Copyright © 2011-2022 走看看