zoukankan      html  css  js  c++  java
  • 图片上传客户端与服务端

            //一万年太久,只争朝夕
    package
    uploadImg; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; /*建立Socket服务 * 读取文件上传源 * 获取输出流。将数据发送到服务端 * 告诉服务端数据发送完毕。服务端停止读取 * 读取服务端发回的数据 * * * * * */ public class ImgClient { public static void main(String[] args) throws UnknownHostException, IOException { Socket s = new Socket("127.0.0.1", 10009); //建立Socket服务 //加载目标文件 FileInputStream file = new FileInputStream("c:\0.jpg"); //获取Socket输出流 OutputStream outputStream = s.getOutputStream(); byte[] buf = new byte[1024]; int len = 0; //将目标文件读入byte数组 while ((len = file.read(buf)) != -1) { outputStream.write(buf, 0, len); } s.shutdownOutput(); BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream())); String readLine = bufIn.readLine(); System.out.println(readLine); bufIn.close(); file.close(); s.close(); } }
    package uploadImg;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class ImgServer {
        /*
         * 建立ServerSockte服务 获取Sockte对象 Socket输入流 创建文件存储 多线程。并发 返回反馈结果到客户端 结束流
         */
        public static void main(String[] args) throws IOException {
            ServerSocket ss = new ServerSocket(10009);
            while (true) {
                Socket accept = ss.accept();
                new Thread(new UploadImg(accept)).start();
            }
        }
    
    }
    package uploadImg;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.Socket;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    
    public class UploadImg implements Runnable {
        private static final int SIZE = 1024 * 1024 * 2;
        private Socket s;
    
        public UploadImg(Socket s) {
            this.s = s;
        }
    
        @Override
        public void run() {
    
            int count = 0;
            String ip = s.getInetAddress().getHostName();
            System.out.println(ip + "....." + "connect");
            try {
                InputStream inputStream = s.getInputStream();
    
                File dir = new File("c:\pic");
                if (!dir.exists()) {
                    dir.mkdir();
                }
                File file = new File(dir, ip + ".jpg");
                while (file.exists()) {
                    file = new File(dir, ip + "(" + (count++) + ").jpg");
    
                }
                FileOutputStream fos = new FileOutputStream(file);
                byte[] buf = new byte[1024];
                int len = 0;
                while ((len = inputStream.read(buf)) != -1) {
                    fos.write(buf, 0, len);
                    if (file.length() > SIZE) {
                        System.out.println(ip + "文件体积太大");
                        fos.close();
                        s.close();
                        System.out.println(ip + "..." + file.delete());
                        return;
                    }
                }
                PrintWriter pw = new PrintWriter(s.getOutputStream());
                pw.println("上传成功");
                fos.close();
                s.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
    }
    一万年太久,只争朝夕!
  • 相关阅读:
    浏览器内核中各个线程之间的关系
    Browser进程和浏览器内核(Renderer进程)的通信过程
    babel 的一些记录
    mac nvm install
    小程序云开发补充
    JavaScript 导学推荐
    网页切片
    初探响应式Web设计
    WEB ICON 的探讨
    [转载]CSS 创作指南(Beta)(css规范)
  • 原文地址:https://www.cnblogs.com/chaoba/p/6958516.html
Copyright © 2011-2022 走看看