• java TCP通信 socket 套接字 用图片上传轰炸服务器


    客户端

    package com.swift.jinji;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    
    /*项目需求:使用socket编写一个Java程序,要求:实现客户端上传文件到服务端,
    即客户端读取本地文本文件,将文件发送至服务端,服务端将接收到的内容存放到文本文件中。*/
    
    public class UploadClient {
    
        static int i = 1024;
    
        public static void main(String[] args) throws IOException, IOException {
    
            while (true) {
                if (i < 65535) {
                    System.out.println(i);
                    Socket s = new Socket("192.168.122.35", 20000);
                    FileInputStream fis = new FileInputStream("d:/abc/0.jpg");
                    OutputStream out = s.getOutputStream();
                    byte[] buf = new byte[1024];
                    int len;
                    while ((len = fis.read(buf)) != -1) {
                        // 这个时候下面的套接字流write写没有写-1,因为到-1就停了
                        out.write(buf, 0, len);
                    }
                    s.shutdownOutput();
                    InputStream in = s.getInputStream();
                    len = in.read(buf);
                    System.out.println(new String(buf, 0, len));
                }
            }
        }
    
    }

    服务器端需开启上传接收客户端socket才行

    package com.swift.jinji;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class UploadServer {
    
        public static void main(String[] args) throws IOException {
    
            ServerSocket serverSocket = new ServerSocket(20000);
            while (true) {
                System.out.println("等待客户端连接");
                Socket s = serverSocket.accept();
                System.out.println("有客户端连接成功 " + s);
                byte[] buf = new byte[1024];
                int len;
                File destDir = new File("d:/upload");
                if (!destDir.exists()) {
                    destDir.mkdirs();
                }
                FileOutputStream fos = new FileOutputStream(new File(destDir, System.currentTimeMillis() + "_0.jpg"));
                InputStream in = s.getInputStream();
                while ((len = in.read(buf)) != -1) {
                    fos.write(buf, 0, len);
                }
                System.out.println("111111111111111");
                OutputStream out = s.getOutputStream();
                out.write("上传成功".getBytes());
                s.close();
            }
        }
    
    }

    效果就是,一瞬间会有数万张图片奔向服务器.

  • 相关阅读:
    如何编译树莓派内核
    代码导出Reporting Services报表文件
    Bit-Coin收入的一分钱
    如何在树莓派上运行雷神之锤III
    新树莓派入手
    如何通过PowerShell在Visual Studio的Post-build中预热SharePoint站点
    每日一题20201218(389. 找不同)
    每日一题20201217(714. 买卖股票的最佳时机含手续费)
    每日一题20201216(290. 单词规律)
    每日一题20201215(738. 单调递增的数字)
  • 原文地址:https://www.cnblogs.com/qingyundian/p/8545283.html
Copyright © 2020-2023  润新知