【发包工具】http多线程发包工具

  使用方法:输入地址,发送的内容,线程数,等待时间,每个线程发送的次数,GET/POST请求。

  源代码

  package com.xmxkkk.httptest;

  import java.awt.*;

  import java.awt.event.*;

  import javax.swing.*;

  import javax.swing.border.TitledBorder;

  public class MainWindow extends JFrame {

  // HttpClient httpclient;

  private JPanel contentPane;

  private BorderLayout borderLayout1;

  private JPanel panURL;

  private JPanel jPanel1;

  private JPanel jPanel2;

  private GridLayout gridLayout1;

  private JTextField URLTxt;

  private JSplitPane jSplitPane1;

  private JScrollPane jScrollPane1;

  private JScrollPane jScrollPane2;

  private JTextArea jTextArea1;

  private JTextArea jTextArea2;

  private JScrollPane jScrollPane3;

  private JTextArea jTextArea3;

  private JButton jButton1;

  private JButton jButton2;

  private JPanel jPanel3;

  private JRadioButton jRadioGet;

  private JRadioButton jRadioPost;

  public String method;

  private JPanel jPanel4;

  private ButtonGroup buttonGroup1;

  private JButton jButton3;

  private JCheckBox jCheckWrap;

  private BorderLayout borderLayout2;

  private TitledBorder titledBorder1;

  private JTextField thread;

  private JTextField num;

  private JTextField time;

  public MainWindow() {

  // httpclient = null;

  thread=new JTextField(5);

  num=new JTextField(5);

  time=new JTextField(5);

  borderLayout1 = new BorderLayout();

  panURL = new JPanel();

  jPanel1 = new JPanel();

  jPanel2 = new JPanel();

  gridLayout1 = new GridLayout();

  URLTxt = new JTextField();

  jSplitPane1 = new JSplitPane();

  jScrollPane1 = new JScrollPane();

  jScrollPane2 = new JScrollPane();

  jTextArea1 = new JTextArea();

  jTextArea2 = new JTextArea();

  jScrollPane3 = new JScrollPane();

  jTextArea3 = new JTextArea();

  jButton1 = new JButton();

  jButton2 = new JButton();

  jPanel3 = new JPanel();

  jRadioGet = new JRadioButton();

  jRadioPost = new JRadioButton();

  method = "POST";

  jPanel4 = new JPanel();

  buttonGroup1 = new ButtonGroup();

  jButton3 = new JButton();

  jCheckWrap = new JCheckBox();

  borderLayout2 = new BorderLayout();

  enableEvents(64L);

  try {

  jbInit();

  } catch (Exception e) {

  e.printStackTrace();

  }

  }

  private void jbInit() throws Exception {

  // httpclient = new HttpClient(this,jTextArea1);

  contentPane = (JPanel) getContentPane();

  titledBorder1 = new TitledBorder("");

  contentPane.setLayout(borderLayout1);

  setSize(new Dimension(652, 460));

  setTitle("Http testing tool");

  jPanel1.setLayout(gridLayout1);

  gridLayout1.setColumns(1);

  URLTxt.setBackground(SystemColor.desktop);

  URLTxt.setForeground(Color.yellow);

  URLTxt.setBorder(BorderFactory.createEtchedBorder());

  URLTxt.setNextFocusableComponent(jButton1);

  // URLTxt.setToolTipText("Input the connection URL");

  URLTxt.setMargin(new Insets(5, 5, 5, 5));

  URLTxt.setText("http://");

  URLTxt.addActionListener(new ActionListener() {

  public void actionPerformed(ActionEvent e) {

  URLTxt_actionPerformed(e);

  }

  });

  jSplitPane1.setOrientation(0);

  jSplitPane1.setDividerSize(8);

  // jTextArea1.setToolTipText("Edit the request xml");

  jTextArea1.setText("");

  jTextArea2.setText("");

  jTextArea3.setForeground(Color.blue);

  // jTextArea3.setToolTipText("Recived message");

  jTextArea3.setText("");

  jTextArea3.setLineWrap(true);

  jTextArea3.setWrapStyleWord(true);

  jButton1.setText("Send");

  jButton1.addActionListener(new ActionListener() {

  public void actionPerformed(ActionEvent e) {

  jButton1_actionPerformed(e);

  }

  });

  jButton2.setText("Exit");

  jButton2.addActionListener(new ActionListener() {

  public void actionPerformed(ActionEvent e) {

  jButton2_actionPerformed(e);

  }

  });

  jRadioGet.setForeground(new Color(0, 0, 230));

  jRadioGet.setText("GET");

  jRadioGet.addActionListener(new ActionListener() {

  public void actionPerformed(ActionEvent e) {

  jRadioGet_actionPerformed(e);

  }

  });

  jRadioPost.setForeground(new Color(0, 0, 230));

  jRadioPost.setText("POST");

  jRadioPost.addActionListener(new ActionListener() {

  public void actionPerformed(ActionEvent e) {

  jRadioPost_actionPerformed(e);

  }

  });

  panURL.setLayout(borderLayout2);

  jButton3.setText("Clear");

  jButton3.addActionListener(new ActionListener() {

  public void actionPerformed(ActionEvent e) {

  jButton3_actionPerformed(e);

  }

  });

  jCheckWrap.setSelected(true);

  jCheckWrap.setText("LineWrap");

  jCheckWrap.addActionListener(new ActionListener() {

  public void actionPerformed(ActionEvent e) {

  jCheckWrap_actionPerformed(e);

  }

  });

  contentPane.add(jPanel1, "Center");

  contentPane.add(panURL, "North");

  contentPane.add(jPanel2, "South");

  panURL.add(URLTxt, "Center");

  jPanel2.add(new JLabel("线程"));

  jPanel2.add(thread,null);

  jPanel2.add(new JLabel("次数"));

  jPanel2.add(num,null);

  jPanel2.add(new JLabel("延时"));

  jPanel2.add(time,null);

  jPanel2.add(jCheckWrap, null);

  jPanel2.add(jPanel4, null);

  jPanel2.add(jPanel3, null);

  jPanel3.add(jRadioGet, null);

  jPanel3.add(jRadioPost, null);

  jRadioPost.setSelected(true);

  buttonGroup1.add(jRadioGet);

  buttonGroup1.add(jRadioPost);

  jPanel2.add(jButton1, null);

  jPanel2.add(jButton3, null);

  jPanel2.add(jButton2, null);

  jPanel1.add(jSplitPane1, null);

  jSplitPane1.add(jScrollPane1, "top");

  jSplitPane1.add(jScrollPane3, "bottom");

  jScrollPane3.getViewport().add(jTextArea3, null);

  jScrollPane1.getViewport().add(jTextArea1, null);

  jScrollPane2.getViewport().add(jTextArea2, null);

  jSplitPane1.setDividerLocation(100);

  }

  protected void processWindowEvent(WindowEvent e) {

  super.processWindowEvent(e);

  if (e.getID() == 201)

  System.exit(0);

  }

  void jButton1_actionPerformed(ActionEvent e) {

  // String soMethod = String.valueOf(String.valueOf((new StringBuffer("Method: ")).append(method).append(":\n")));

  String url = URLTxt.getText();

  String xml = jTextArea1.getText();

  String str=thread.getText();

  int cnt=1;

  if(str==null||str.equals("")){

  cnt=1;

  thread.setText(cnt+"");

  }else{

  cnt=Integer.parseInt(str);

  thread.setText(cnt+"");

  }

  String abc=num.getText();

  int every=1;

  if(abc==null||abc.equals("")){

  every=1;

  num.setText(every+"");

  }else{

  every=Integer.parseInt(abc);

  num.setText(every+"");

  }

  String div=time.getText();

  int divI=0;

  if(div==null||div.equals("")){

  divI=0;

  time.setText(divI+"");

  }else{

  divI=Integer.parseInt(div);

  time.setText(divI+"");

  }

  for(int i=0;i -1)

  sb.append((char) ch);

  rec_string = sb.toString();

  rd.close();

  urlconn.disconnect();

  } catch (Exception e) {

  log = String.valueOf(String.valueOf((new StringBuffer("请求错误:"))

  .append(e.getMessage()).append(e.toString())));

  writeLog(log);

  }

  return rec_string;

  }

  private String getMethod() {

  if (mwindow == null)

  return "GET";

  else

  return mwindow.method;

  }

  private void writeLog(String s) {

  if (mwindow == null)

  System.out.println(s);

  else

  mwindow.showMsg(String.valueOf(String.valueOf(s)).concat("\n"));

  }

  public static void main(String args[]) {

  }

  @Override

  public void run() {

  for(int i=0;i screenSize.height)

  frameSize.height = screenSize.height;

  if (frameSize.width > screenSize.width)

  frameSize.width = screenSize.width;

  frame.setLocation((screenSize.width - frameSize.width) / 2,

  (screenSize.height - frameSize.height) / 2);

  frame.setVisible(true);

  }

  public static void main(String args[]) {

  try {

  //

  UIManager.setLookAndFeel(UIManager

  .getCrossPlatformLookAndFeelClassName());

  UIManager

  .setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

  // SwingUtilities.updateComponentTreeUI(this);

  } catch (Exception e) {

  e.printStackTrace();

  }

  new HttpTest();

  }

  }

【发包工具】http多线程发包工具的更多相关文章

  1. Java 并发包中的高级同步工具

    Java 并发包中的高级同步工具 Java 中的并发包指的是 java.util.concurrent(简称 JUC)包和其子包下的类和接口,它为 Java 的并发提供了各种功能支持,比如: 提供了线 ...

  2. Mysql多线程性能测试工具sysbench 安装、使用和测试

    From:http://www.cnblogs.com/zhoujinyi/archive/2013/04/19/3029134.html 摘要:      sysbench是一个开源的.模块化的.跨 ...

  3. 开源多线程性能测试工具-sysbench

    导读 sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试.数据库目前支持MySQL/Oracle/PostgreSQL.本文主要演示Mysql测试 ...

  4. linux多线程下载工具mwget

    linux多线程下载工具mwget 经常使用wget进行文件下载,然而wget的处理速度并不如人意.遇到一些国外的站点,经常慢得像蜗牛一般.然而为了解决这个问题,便有了mwget:m表示multi多线 ...

  5. CentOS6.4 安装aria2多线程下载工具

    aria2是一个Linux下的多线程下载工具,支持HTTP/HTTPS.FTP.BitTorrent.Metalink协议. 平时在linux上下载http上的东西常用如wget.curl命令,但是他 ...

  6. MySQL多线程备份工具:mydumper

    MySQL多线程备份工具:mydumper http://www.orczhou.com/index.php/2011/12/how-to-split-mysqldump-file/ Mydumper ...

  7. Linux下多线程下载工具myget

    [root@superdba ~]# mytgetMytget 0.0.99: A download accelerator for GNU/LinuxUsage: mytget [options]. ...

  8. Linux 下的多线程下载工具 Axel

    Axel 是 Linux 平台下的一款 HTTP/FTP 的高速下载工具,支持多线程以及断点续传,对于一些有速度限制的服务器上下载东西时,Axel 的速度就明显比 wget 要快一些 还有另一个基于 ...

  9. Java并发多线程 - 并发工具类JUC

    安全共享对象策略 1.线程限制 : 一个被线程限制的对象,由线程独占,并且只能被占有它的线程修改 2.共享只读 : 一个共享只读的对象,在没有额外同步的情况下,可以被多个线程并发访问, 但是任何线程都 ...

随机推荐

  1. JS实现多行文本最后是省略号紧随其后还有个超链接在同一行的需求

    1.布局及样式如下图: 2.js获得上图的div对象,然后判断div对象的高度,如果大于一行的高度了表示内容有两行了,再获得span标签里面的内容并用正则将后六个字符替换成“......”这里的实现代 ...

  2. Wireshark抓包工具HttpAnalyzerStdV7

    http.request.full_uri contains "XXXserver/api/" http.host contains "XXX5.单位.com"

  3. 纯CSS3打造非常炫的加载动画

    纯css3打造的一款非常炫的加载图.用在需要一定时间加载的地方非常合适.先上效果图: 点击这里在线预览 代码非常简单.没有用任何javascript代码.纯css3实现. html代码: <di ...

  4. PowerDesigner导入java类生成类图

    1;打开PowerDesigner 2;file—>Reverse Engineer—>Object Language... 3;弹出一个对话框,在General模块下Model Name ...

  5. linux命令实现http的get和post请求

    1. wget wget -O -  "http://$IP/host" --header="Content-Type: application/json" - ...

  6. [sed] linux sed 批量替换字符串

    比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做: sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl ...

  7. Extjs4 页面加载先白屏后显示的bug解决

    通过Extjs MVC结构做好页面后,加载过程中发现,会瞬间白屏,然后呈现extjs界面的问题,当类似页面放置到iframe中时,会显得非常怪异. 可通过下图体验下. 当我单击“意见反馈”菜单,在右侧 ...

  8. 【linux】——linux僵死进程的产生与避免

    一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁, 而是留下一个称为僵死进程(Zombie)的数据结构(系统调用exit,它的作用是使进程退出,但也仅仅限于将一个正常的进程变成 ...

  9. lvreduce -L 1000M /dev/vg0/lv0 表示最后缩减至多大,不是减少了多大

    resize2fs在前 lvextend 在后 将/dev/vg0/lv0缩减到1000M umount /lv/ 取消挂载 [root@desktop4 ~]# e2fsck -f /dev/vg0 ...

  10. 百度地图Api进阶教程-弹出信息窗口5.html

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="ini ...