繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> 算法/线程 >> 提供一个:用多线程模拟多用户访问站点情况!

提供一个:用多线程模拟多用户访问站点情况!

2004-10-01 08:26:10  作者:  来源:互联网  浏览次数:24  文字大小:【】【】【
简介:    当时写这个程序是公司要求有个测试环境测试多用户情况,我匆匆忙忙的用了个上午写完后,一测试能用,就交差了,不过后来在多次使用的时候发现了有时候程序回莫名退出,不过由于时间等原...

当时写这个程序是公司要求有个测试环境测试多用户情况,我匆匆忙忙的用了个上午写完后,一测试能用,就交差了,不过后来在多次使用的时候发现了有时候程序回莫名退出,不过由于时间等原应,就没有在仔细修改了,朋友门如果有新区的话,可以自己修改一下,如果有什么想法也希望和我联系!

功能说明:可以输入需要访问的URL(注意需要加"http://"才可以,我当时程序中偷懒了,和想象中的模拟用户数,然后确定就可以了,如果你的输入都正确的话,程序会自动创建你希望的线程数目,然后一直运行,知道你电极了“停止”按扭,线程才会结束。在执行期间,线程会将访问一个网页所用到的时间,显示到文本框中,方便用户统计。

不多说了,看程序吧

using System;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

using System.Threading; //线程类

using System.Collections ;

using System.Net;

using System.IO;

using System.Xml;

using System.Drawing;

using System.Drawing.Text;

namespace WindowsApplication1

{

///

/// Summary description for Form1.

///

public class frmMain : System.Windows.Forms.Form

{

private System.Windows.Forms.RichTextBox richTextBox1;

private System.Windows.Forms.Label label1;

private System.Windows.Forms.Label label2;

private System.Windows.Forms.Button button1;

private System.Windows.Forms.TextBox url;

private System.Windows.Forms.TextBox usernum;

private System.Windows.Forms.Button button2;

private System.ComponentModel.IContainer components;

private static string server; //测试页面地址

private static int intusernum; //虚拟测试人数

private System.Windows.Forms.Timer timer1;

private static bool isend ; //定义是否中断程序(线程)运行

public frmMain()

{

server="";

intusernum=0;

isend=true;

InitializeComponent();

}

protected override void Dispose( bool disposing )

{

if( disposing )

{

if (components != null)

{

components.Dispose();

}

}

base.Dispose( disposing );

}

#region Windows Form Designer generated code

private void InitializeComponent()

{

this.components = new System.ComponentModel.Container();

this.usernum = new System.Windows.Forms.TextBox();

this.richTextBox1 = new System.Windows.Forms.RichTextBox();

this.url = new System.Windows.Forms.TextBox();

this.label1 = new System.Windows.Forms.Label();

this.timer1 = new System.Windows.Forms.Timer(this.components);

this.label2 = new System.Windows.Forms.Label();

this.button1 = new System.Windows.Forms.Button();

this.button2 = new System.Windows.Forms.Button();

this.SuspendLayout();

//

// usernum

//

this.usernum.Location = new System.Drawing.Point(304, 320);

this.usernum.Name = "usernum";

this.usernum.Size = new System.Drawing.Size(48, 21);

this.usernum.TabIndex = 5;

this.usernum.Text = "";

//

// toolBarButton1

//

//this.toolBarButton1.ImageIndex = 0;

//

// richTextBox1

//

this.richTextBox1.Location = new System.Drawing.Point(8, 40);

this.richTextBox1.Name = "richTextBox1";

this.richTextBox1.Size = new System.Drawing.Size(496, 272);

this.richTextBox1.TabIndex = 1;

this.richTextBox1.Text = "";

//

// url

//

this.url.Location = new System.Drawing.Point(48, 320);

this.url.Name = "url";

this.url.Size = new System.Drawing.Size(168, 21);

this.url.TabIndex = 2;

this.url.Text = "";

//

// label1

//

this.label1.Location = new System.Drawing.Point(8, 328);

this.label1.Name = "label1";

this.label1.Size = new System.Drawing.Size(32, 16);

this.label1.TabIndex = 3;

this.label1.Text = "URL:";

this.timer1.Interval = 1000;

//

// label2

//

this.label2.Location = new System.Drawing.Point(232, 328);

this.label2.Name = "label2";

this.label2.Size = new System.Drawing.Size(64, 16);

this.label2.TabIndex = 4;

this.label2.Text = "虚拟人数:";

//

// button1

//

this.button1.Location = new System.Drawing.Point(368, 320);

this.button1.Name = "button1";

this.button1.Size = new System.Drawing.Size(64, 24);

this.button1.TabIndex = 6;

this.button1.Text = "确定";

this.button1.Click += new System.EventHandler(this.button1_Click);

//

// button2

//

this.button2.Location = new System.Drawing.Point(440, 319);

this.button2.Name = "button2";

this.button2.Size = new System.Drawing.Size(64, 25);

this.button2.TabIndex = 7;

this.button2.Text = "中断";

this.button2.Click += new System.EventHandler(this.button2_Click);

//

// frmMain

//

this.AcceptButton = this.button1;

this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

this.ClientSize = new System.Drawing.Size(512, 349);

this.Controls.AddRange(new System.Windows.Forms.Control[] {

//this.toolBar1,

this.button2,

this.button1,

this.usernum,

this.label2,

this.label1,

this.url,

this.richTextBox1});

this.MaximizeBox = false;

this.Name = "frmMain";

this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;

this.Text = "站点测试";

this.Load += new System.EventHandler(this.Form1_Load);

this.ResumeLayout(false);

}

#endregion

///

/// The main entry point for the application.

///

[STAThread]

static void Main()

{

try

{

frmMain mainForm = new frmMain();

mainForm.Menu =CreateMainMenu();

mainForm.BackColor = Color.DarkGoldenrod ;

Application.Run(mainForm);

}

catch(Exception e)

{

MessageBox.Show("Error:" + e, "警告");

return;

}

}

//创建工具条

public static MainMenu CreateMainMenu()

{

MainMenu my= new MainMenu();

MenuItem menuItem1=new MenuItem();

MenuItem menuItem2=new MenuItem();

MenuItem menuItem3=new MenuItem();

MenuItem menuItem4=new MenuItem();

menuItem1.Text = "设置";

menuItem2.Text = "帮助";

menuItem3.Text = "帮助";

menuItem4.Text = "版权";

menuItem2.MenuItems.Add(menuItem3);

menuItem2.MenuItems.Add(menuItem4);

EventHandler handle=new EventHandler(SelectMenuItem) ;

menuItem1.Click +=handle;

menuItem2.Click +=handle;

menuItem3.Click +=handle;

menuItem4.Click +=handle;

my.MenuItems.Add (menuItem1);

my.MenuItems.Add(menuItem2);

return(my);

}

//点击工具条按纽后执行功能

public static void SelectMenuItem(object sender, EventArgs e)

{

MessageBox.Show(e.ToString() );

}

private void Form1_Load(object sender, System.EventArgs e)

{

this.button1.Enabled=true;

this.button2.Enabled=false;

}

private void button1_Click(object sender, System.EventArgs e)

{

isend=false;

this.richTextBox1.Text="";

this.button1.Enabled=false;

this.button2.Enabled=true;

if (this.url.Text .Equals(""))

{

MessageBox.Show("请输入您要测试的URL地址!", "警告");

this.url.Focus();

isend =true;

this.button1.Enabled=true;

this.button2.Enabled=false;

return;

}

else

{

server=url.Text;

}

try

{

if (this.usernum.Text.Equals(""))

{

MessageBox.Show("请输入您希望的虚拟测试人数!", "警告");

isend =true;

this.button1.Enabled=true;

this.button2.Enabled=false;

this.usernum.Focus();

return;

}

else

{

intusernum=int.Parse(this.usernum.Text );

}

}

catch(Exception )

{

MessageBox.Show("您输入的测试人数不合法,请重新输入!", "警告");

this.usernum.Text="";

isend =true;

this.button1.Enabled=true;

this.button2.Enabled=false;

this.usernum.Focus();

return;

}

//开始启动线程

MainStart();

}

private void button2_Click(object sender, System.EventArgs e)

{

isend =true;

this.button1.Enabled=true;

this.button2.Enabled=false;

}

/////////////////////////////////////////////////////////////////////////////////////////

//下面为线程部分

/////////////////////////////////////////////////////////////////////////////////////////

public void MainStart()

{

if(server.Equals("") || intusernum==0)

{

return;

}

//开始创建子线程

for(int i=0;i

{

Thread Users=null;

try

{

Users = new Thread(new ThreadStart(this.ceshi) );

Users.Priority=ThreadPriority.Normal;

Users.Start();

}

catch(Exception e)

{

this.richTextBox1.Text += "发生错误:" + e + "\r\n";

isend=true;

this.button1.Enabled=true;

this.button2.Enabled=false;

return;

}

}

}

//子线程:检测得到页面时间

public void ceshi()

{

//MessageBox.Show("线程开始", "警告");

while(!isend)

{

Random rdm1 = new Random(unchecked((int)DateTime.Now.Ticks));

string tname=rdm1.Next().ToString();

try

{

DateTime temptime = new DateTime();

temptime=DateTime.Now;

WebRequest myRequest = WebRequest.Create(server); //出事化WEB页面

WebResponse myResponse = myRequest.GetResponse(); //返回RESPONSE对象

Stream stream=myResponse.GetResponseStream();

StreamReader sr =new StreamReader(stream);

string retstr="";

string tmp="";

while ((tmp=sr.ReadLine())!=null)

{

retstr += tmp;

}

myResponse.Close(); //管理RESPONSE对象

this.richTextBox1.Text += "线程" + tname + "执行时间为:" + DateTime.Now.Subtract(temptime) + "豪秒\r\n\r\n";

}

catch(Exception)

{

this.richTextBox1.Text+="错误:您输入的URL地址不正确,或该页面不存在!" + "\r\n\r\n";

break;

}

}

}

}

}

责任编辑:admin
相关文章