基本信息
源码名称:SOCKET调试工具与压力测试小工具源代码
源码大小:0.39M
文件格式:.rar
开发语言:C#
更新时间:2017-04-07
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
SOCKET调试工具与压力测试小工具源代码
public void SendThreadProc()
{
IsUdp.Enabled = IsTcp.Enabled = IsHttp.Enabled = Server.Enabled = Port.Enabled = false;
IPHostEntry ipEntry = Dns.GetHostEntry(Server.Text);
statusBar.Panels[0].Text = "正在解析主机\"" Server.Text "\"……";
int RecvCount = 0;
int MSDiff;
DateTime stTime = DateTime.Now, enTime;
if (ipEntry == null)
{
MessageBox.Show(this, "无法解析主机地址:\"" Server.Text "\"");
IsUdp.Enabled = IsTcp.Enabled = IsHttp.Enabled = Server.Enabled = Port.Enabled = true;
return;
}
IPAddress ipAddress = ipEntry.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, Int32.Parse(Port.Text));
byte[] msg = GetEncoding().GetBytes(Send.Text);
btnSend.Enabled = false;
ContinueRecving = true;
//创建Socket:
Socket sok;
if (IsUdp.Checked)
{
sok = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
}
else
{
sok = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
}
try
{
//连接发送
if (IsUdp.Checked)
{
statusBar.Panels[0].Text = "正在发送UDP到\"" Server.Text "\"……";
sok.SendTo(msg, ipEndPoint);
}
else
{
statusBar.Panels[0].Text = "正在连接\"" Server.Text "\"……";
sok.Connect(ipEndPoint);
sok.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, SocketTimeOut * 1000);
sok.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, SocketTimeOut * 1000);
statusBar.Panels[0].Text = "正在发送请求到 \"" Server.Text "\"……";
sok.Send(msg, 0, msg.Length, SocketFlags.None);
}
if (IsHttp.Checked)
{
// Blocks until read returns.
byte[] buf = new byte[1024];
int rc;
CurrentThreadAge = 0;
timer1.Enabled = true;
statusBar.Panels[0].Text = "正在接收来自 \"" Server.Text "\"……";
while (ContinueRecving)
{
rc = sok.Receive(buf, 0, buf.Length, SocketFlags.None);
if (rc > 0)
{
AppendSendRecv(GetEncoding().GetString(buf, 0, rc));
RecvCount = rc;
}
else break;
}
}
}
catch (Exception e)
{
AppendSendRecv("\r\n----" e.Message "\r\n");
}
//关闭连接
if (sok.Connected)
{
sok.Shutdown(SocketShutdown.Both);
}
sok.Close();
enTime = DateTime.Now;
MSDiff = (int)((enTime - stTime).TotalMilliseconds);
timer1.Enabled = false;
statusBar.Panels[0].Text = "完毕, 接收到" RecvCount "字节,下载速率 " ((int)(1000.0 / (MSDiff > 0 ? MSDiff : 1) * RecvCount)) " 字节/秒。";
btnSend.Enabled = true;
IsUdp.Enabled = IsTcp.Enabled = IsHttp.Enabled = Server.Enabled = Port.Enabled = true;
}
public void BatchSendThreadProc()
{
IPHostEntry ipEntry = Dns.GetHostEntry(Server.Text);
if (ipEntry == null)
{
return;
}
ThreadCounter ;
try
{
//解析地址
IPAddress ipAddress = ipEntry.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, Int32.Parse(Port.Text));
byte[] msg = GetEncoding().GetBytes(Send.Text);
//无限循环
while(BatchContinueRecving)
{
//创建Socket:
Socket sok;
if (IsUdp.Checked)
{
sok = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
}
else
{
sok = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
}
try
{
sok.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, SocketTimeOut*1000);
sok.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, SocketTimeOut*1000);
}
catch
{
}
//发送 || 连接
if (IsUdp.Checked)
{
sok.SendTo(msg, ipEndPoint);
}
else
{
try
{
sok.Connect(ipEndPoint);
}
catch
{
}
sok.Send(msg, 0, msg.Length, SocketFlags.None);
}
if (IsHttp.Checked)
{
// Blocks until read returns.
byte[] buf = new byte[1024];
int rc;
while(BatchContinueRecving)//
{
rc = sok.Receive(buf, 0, buf.Length, SocketFlags.None);
if (rc > 0)
{
//Result = GetEncoding().GetString(buf, 0, rc);
}
else break;
}
}
//关闭本次连接
//Recv.Text = Result;
sok.Shutdown(SocketShutdown.Both);
sok.Close();
TotalResp ;
RespPerSecond ;
}
}
catch(Exception e)
{
AppendSendRecv("\r\n----" e.Message "\r\n");
}
ThreadCounter--;
}
public void HttpWorkerThread(object args)
{
Socket s = (Socket)args;
if (s != null && ContinueListening)
{
try
{
statusBar.Panels[0].Text = "正在接收来自“" ((IPEndPoint)s.RemoteEndPoint).Address.ToString() "”的TCP数据……";
}
catch
{
}
if (miAutoShowTime.Checked) AppendLestenRecv(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") " ");
//设置超时:
try
{
s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, SocketTimeOut * 1000);
s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, SocketTimeOut * 1000);
//开始接收TCP:
byte[] buf = new byte[65536];
int rc, RecvLen = 0;
string tmp;
int clen = -1;
while (ContinueListening)
{
if (IsHttpListen.Checked && clen > 0 && RecvLen >= clen) break;//超过Content-Length,退出循环
rc = s.Receive(buf, 0, buf.Length, SocketFlags.None);
if (rc > 0)
{
if (IsHttpListen.Checked && clen == -1)
{
tmp = GetEncoding().GetString(buf, 0, rc);
AppendLestenRecv(tmp);
tmp = tmp.ToLower();
int st = tmp.IndexOf("content-length:");
if (st >= 0)
{
st = 15;
tmp = tmp.Substring(st, tmp.Length - st);
st = tmp.IndexOf("\r\n");
if (st >= 0) tmp = tmp.Substring(0, st).Trim();
else tmp = tmp.Trim();
try
{
clen = Int32.Parse(tmp);
}
catch//错误
{
clen = rc;
}
}
else
{
clen = rc;//没有Content-Length,就当完成接收
}
}
else AppendLestenRecv(GetEncoding().GetString(buf, 0, rc));
RecvLen = rc;
}
else break;
}
if (miAutoCRLF.Checked) AppendLestenRecv("\r\n");
byte[] msg = GetEncoding().GetBytes(ListenSend.Text);
s.Send(msg, 0, msg.Length, SocketFlags.None);
//关闭连接
s.Shutdown(SocketShutdown.Both);
s.Close();
//开始新的侦听:
statusBar.Panels[0].Text = "完毕";//阻塞
if (miAlert.Checked) Alert();
}
catch (Exception e)
{
AppendLestenRecv(e.Message);
}
}
}
[DllImport("winmm.dll", EntryPoint="PlaySound", CharSet=CharSet.Auto)]
public static extern bool PlaySound(
string pszSound,
int hmod,
int fdwSound
);
public void PlayWav(string FileName)
{
PlaySound(FileName, 0, 0x0001|0x00020000);
}
public void Alert()
{
PlayWav("notify.wav");
}
public void ListenThreadProc()
{
IPHostEntry ipEntry = Dns.GetHostEntry(ListenAddr.Text);
IsUdpListen.Enabled = IsTcpListen.Enabled = IsHttpListen.Enabled = ListenAddr.Enabled = ListenPort.Enabled = false;
statusBar.Panels[0].Text = "正在解析主机\"" ListenAddr.Text "\"……";
if (ipEntry == null)
{
MessageBox.Show(this, "无法解析主机地址:\"" ListenAddr.Text "\"");
IsUdpListen.Enabled = IsTcpListen.Enabled = IsHttpListen.Enabled = ListenAddr.Enabled = ListenPort.Enabled = true;
return;
}
IPAddress ipAddress = ipEntry.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, Int32.Parse(ListenPort.Text));
try
{
btnStartListen.Enabled = false;
ContinueListening = true;
//创建Socket:
Socket sok;
if (IsUdpListen.Checked)
{
sok = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
}
else
{
sok = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
}
sok.Bind(ipEndPoint);
if (!IsUdpListen.Checked)sok.Listen(100); //100: Listen Queue Size
//接收
if (IsUdpListen.Checked)
{
EndPoint remoteEP = new IPEndPoint(IPAddress.Any, 0);
byte[] buf = new byte[655360];
int rc;
while (ContinueListening)
{
statusBar.Panels[0].Text = "完毕";
rc = sok.ReceiveFrom(buf, ref remoteEP);//阻塞
string srcIP = ((IPEndPoint)remoteEP).Address.ToString();
statusBar.Panels[0].Text = "接收到来自“" srcIP "”的UDP数据";
if (miAutoShowTime.Checked)AppendLestenRecv(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") " [" srcIP "]\r\n");
do
{
//开始接收UDP:
if (rc > 0)
{
AppendLestenRecv(GetEncoding().GetString(buf, 0, rc));
}
if (sok.Available > 0)
{
//还有后续数据
rc = sok.ReceiveFrom(buf, ref remoteEP);//阻塞
}
else break;
}
while (ContinueListening);
if (miAutoCRLF.Checked)AppendLestenRecv("\r\n");
if (miAlert.Checked) Alert();
if (ContinueListening) // 当循环被通知退出时,为 false
{
byte[] msg = GetEncoding().GetBytes(ListenSend.Text);
try
{
if (msg.Length > 0) sok.SendTo(msg, sok.RemoteEndPoint);//答复对方
}
catch (Exception e)
{
AppendLestenRecv("\r\n----" e.Message "\r\n");
}
}
}
}
else
{
while (ContinueListening)
{
statusBar.Panels[0].Text = "完毕";
Socket s = sok.Accept();//阻塞
if (ContinueListening) // 当循环被通知退出时,为 false
{
ThreadPool.QueueUserWorkItem(new WaitCallback(HttpWorkerThread), s);
}
}
}
//关闭连接
if (sok.Connected)
{
sok.Shutdown(SocketShutdown.Both);
}
sok.Close();
}
catch(Exception e)
{
AppendLestenRecv("\r\n----" e.Message "\r\n");
}
statusBar.Panels[0].Text = "完毕";
btnStartListen.Enabled = true;
IsUdpListen.Enabled = IsTcpListen.Enabled = IsHttpListen.Enabled = ListenAddr.Enabled = ListenPort.Enabled = true;
}
private void AppendSendRecv(string text)
{
try
{
Recv.AppendText(text);
}
catch
{
}
}
private void AppendLestenRecv(string text)
{
try
{
ListenRecv.AppendText(text);
}
catch
{
}
}
private void btnSend_Click(object sender, System.EventArgs e)
{
CurrentRecvThread = new Thread(new ThreadStart(SendThreadProc));
CurrentRecvThread.IsBackground = true;
CurrentRecvThread.Start();
statusBar.Panels[5].Text = "0";
}
private void btnStop_Click(object sender, System.EventArgs e)
{
}
private void Form1_Load(object sender, System.EventArgs e)
{
RebuildHostStr();
}
private void groupBox1_Enter(object sender, System.EventArgs e)
{
}
private void groupBox1_Enter_1(object sender, System.EventArgs e)
{
}
private void Send_TextChanged(object sender, System.EventArgs e)
{
}
private void statusBar1_PanelClick(object sender, System.Windows.Forms.StatusBarPanelClickEventArgs e)
{
}
private void Form1_Resize(object sender, System.EventArgs e)
{
}
private void Form1_SizeChanged(object sender, System.EventArgs e)
{
}
private void splitter1_SplitterMoving(object sender, System.Windows.Forms.SplitterEventArgs e)
{
}
private void Send_SizeChanged(object sender, System.EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)return;
if (Send.Height < splitter1.MinSize)
{
int delta = Send.Top splitter1.MinSize - splitter1.Top;
Send.Height = delta;
splitter1.Top = delta;
Recv.Top = delta;
Recv.Height -= delta;
}
}
private void btnStop_Click_1(object sender, System.EventArgs e)
{
if (CurrentRecvThread != null)
{
ContinueRecving = false;
}
}
private void btnClear_Click(object sender, System.EventArgs e)
{
Recv.Clear();
}
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
statusBar.Panels[1].Text = ThreadCounter.ToString();
statusBar.Panels[2].Text = TotalResp.ToString();
statusBar.Panels[3].Text = RespPerSecond.ToString();
RespPerSecond = 0;
}
private void StatusBar_PanelClick(object sender, System.Windows.Forms.StatusBarPanelClickEventArgs e)
{
}
private void menuItem11_Click(object sender, System.EventArgs e)
{
Close();
}
private void menuItem4_Click(object sender, System.EventArgs e)
{
Process proc = new Process();
proc.StartInfo.FileName = Application.ExecutablePath;
proc.Start();
}
private void menuItem7_Click(object sender, System.EventArgs e)
{
ThreadCounter = 0;
TotalResp = 0;
RespPerSecond = 0;
}
private void menuItem8_Click(object sender, System.EventArgs e)
{
BatchContinueRecving = true;
Thread th = new Thread(new ThreadStart(BatchSendThreadProc));
th.IsBackground = true;
th.Start();
}
private bool AppGetInputInt(string msg, ref int reti)
{
string rets = reti.ToString();
bool result = InputForm.ShowModal(this, msg, ref rets);
if (result)
{
try
{
reti = Int32.Parse(rets);
}
catch
{
MessageBox.Show(this, "错误:输入无效", "错误消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
result = false;
}
}
return result;
}
private void menuItem9_Click(object sender, System.EventArgs e)
{
int i=0;
int c = 10;
if (AppGetInputInt("请输入要启动的线程数目:", ref c))
{
if (c < 1)
{
MessageBox.Show(this, "请输入有效数字");
return;
}
//启动线程
BatchContinueRecving = true;
while(i < c)
{
Thread th = new Thread(new ThreadStart(BatchSendThreadProc));
th.IsBackground = true;
th.Start();
}
}
}
private void menuItem6_Click(object sender, System.EventArgs e)
{
int c = SocketTimeOut;
if (AppGetInputInt("请输入超时秒数:", ref c))
{
if (c < 1)
{
MessageBox.Show(this, "请输入有效数字");
return;
}
SocketTimeOut = c;
}
}
private void menuItem12_Click(object sender, System.EventArgs e)
{
BatchContinueRecving = false;
}
private void Recv_TextChanged(object sender, System.EventArgs e)
{
ShowCaretPos(sender as TextBox);
}
private void FormMain_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
BatchContinueRecving = ContinueRecving = ContinueListening = false;
NotifyStopListen();
}
private void menuItem3_Click(object sender, System.EventArgs e)
{
MessageBox.Show(this, "Socket调试程序, V3.0\t\t\t\t\t\r\nAppFramework 2008-02-25\r\nAppFramework@hotmail.com\r\n\r\n现在时刻:" DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
private void ListenAddr_TextChanged(object sender, System.EventArgs e)
{
}
private void tabControl1_SelectedIndexChanged(object sender, System.EventArgs e)
{
}
private void RebuildHostStr()
{
ComboBox box = Server;
string HostStr = "Host: " box.Text ":" Port.Text;
//计算切分位置和对应插入的Host头字符串:
string s = Send.Text.ToLower();
//先找Host头:
int st=-1, en=s.Length;
while(s != "")
{
st = s.LastIndexOf("host:");
if ((st==0) || (st>0 && "\r\n".IndexOf(s[st-1])>=0))//确保找到的是"host:",而不是"localhost:"之类
{
s = Send.Text.ToLower();
string rStr = s.Substring(st, s.Length-st);
en = rStr.IndexOf("\r\n");
if (en >= 0)
{
en = st;
}
else
{
en = st rStr.Length;
}
break;
}
else
{
s = s.Substring(0, st);
st = -1;
}
}
s = Send.Text.ToLower();
if (st >= 0)//找到了Host头
{
}
else
{
//找最后一个\r\n\r\n:
st = s.LastIndexOf("\r\n\r\n");
if (st>=0 && st 4==s.Length)
{
en = st;
HostStr = "\r\n" HostStr;
}
else
{
//找最后一个\r\n:
st = s.LastIndexOf("\r\n");
if (st>=0 && st 2==s.Length)
{
en = st;
HostStr = "\r\n" HostStr "\r\n";
}
else//在最后追加:
{
st = en = s.Length;
HostStr = "\r\n" HostStr "\r\n\r\n";
}
}
}
//重新组合字符串:
s = Send.Text;
Send.Text = s.Substring(0, st) HostStr s.Substring(en, s.Length - en);
}
private void Server_SelectedIndexChanged(object sender, System.EventArgs e)
{
RebuildHostStr();
}
private void NotifyStopListen()
{
//向自己发送TCP/UDP请求,解决侦听线程的阻塞造成的无法退出:
IPHostEntry ipEntry = Dns.GetHostEntry(ListenAddr.Text);
statusBar.Panels[0].Text = "正在解析主机\"" ListenAddr.Text "\"……";
if (ipEntry == null)
{
statusBar.Panels[0].Text = "无法解析主机地址:\"" ListenAddr.Text "\"";
return;
}
IPAddress ipAddress = ipEntry.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, Int32.Parse(ListenPort.Text));
//创建Socket:
Socket sokUdp, sokTcp;
sokUdp = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
sokTcp = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//连接发送
statusBar.Panels[0].Text = "正在通知UDP侦听线程退出……";
try
{
if (btnStartListen.Enabled==false && IsUdpListen.Checked)
{
sokUdp.SendTo(GetEncoding().GetBytes("QUIT"), ipEndPoint);
}
}
catch
{
}
statusBar.Panels[0].Text = "正在通知TCP侦听线程退出……";
try
{
if (btnStartListen.Enabled==false && !IsUdpListen.Checked)
{
sokTcp.Connect(ipEndPoint);
byte[] buf = GetEncoding().GetBytes("QUIT");
sokTcp.Send(buf, 0, buf.Length, SocketFlags.None);
}
}
catch
{
}
//关闭连接
try
{
if (sokUdp.Connected)
{
sokUdp.Shutdown(SocketShutdown.Both);
}
sokUdp.Close();
if (sokTcp.Connected)
{
sokTcp.Shutdown(SocketShutdown.Both);
}
sokTcp.Close();
}
catch
{
}
statusBar.Panels[0].Text = "完毕";
}
private void btnStopListen_Click(object sender, System.EventArgs e)
{
ContinueListening = false;
NotifyStopListen();
}
private void btnStartListen_Click(object sender, System.EventArgs e)
{
Thread th = new Thread(new ThreadStart(ListenThreadProc));
th.IsBackground = true;
th.Start();
}
private void ShowCaretPos(TextBox Sender)
{
if (!Sender.Focused)return;
int row=0, col=0;
Utils.MemoGetCaretPos(Sender, ref row, ref col);
statusBar.Panels[4].Text = row ":" col;
}
private void Send_TextChanged_1(object sender, System.EventArgs e)
{
ShowCaretPos(sender as TextBox);
}
private void Send_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
ShowCaretPos(sender as TextBox);
}
private void Send_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
ShowCaretPos(sender as TextBox);
}
private void timer1_Elapsed_1(object sender, System.Timers.ElapsedEventArgs e)
{
statusBar.Panels[5].Text = ( CurrentThreadAge).ToString();
}
private void Server_TextChanged(object sender, System.EventArgs e)
{
RebuildHostStr();
}
private void Port_TextChanged(object sender, System.EventArgs e)
{
RebuildHostStr();
}
private void Recv_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
ShowCaretPos(sender as TextBox);
}
private void Recv_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
ShowCaretPos(sender as TextBox);
}
private void btnClearListen_Click(object sender, System.EventArgs e)
{
ListenRecv.Text = "";
}
private void menuItem15_Click(object sender, System.EventArgs e)
{
if (this.ActiveControl is TextBox)
{
TextBox box = this.ActiveControl as TextBox;
byte[] b = GetEncoding().GetBytes(box.SelectedText);
MessageBox.Show("共 " b.Length.ToString() " 字节");
}
}
private void ListenSend_TextChanged(object sender, System.EventArgs e)
{
ShowCaretPos(sender as TextBox);
}
private void ListenSend_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
ShowCaretPos(sender as TextBox);
}
private void ListenSend_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
ShowCaretPos(sender as TextBox);
}
private void ListenRecv_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
ShowCaretPos(sender as TextBox);
}
private void ListenRecv_TextChanged(object sender, System.EventArgs e)
{
ShowCaretPos(sender as TextBox);
}
private void ListenRecv_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
ShowCaretPos(sender as TextBox);
}
private void ListenSend_SizeChanged(object sender, System.EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)return;
if (ListenSend.Height < splitter2.MinSize)
{
int delta = Send.Top splitter2.MinSize - splitter2.Top;
ListenSend.Height = delta;
splitter2.Top = delta;
ListenRecv.Top = delta;
ListenRecv.Height -= delta;
}
}
private void ListenSend_DoubleClick(object sender, System.EventArgs e)
{
ListenSend.SelectAll();
}
private void miAutoCRLF_Click(object sender, System.EventArgs e)
{
MenuItem item = (MenuItem)sender;
item.Checked = !item.Checked;
}
private void Send_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.Control && e.KeyCode==Keys.A)
{
TextBox box = sender as TextBox;
box.SelectAll();
}
}
bool CountStarted = false;
DateTime StartTime;
int RespCountWhenCountStarted;
private void menuItem19_Click(object sender, System.EventArgs e)
{
if (CountStarted)
{
if (MessageBox.Show(this, "计数已经开始,你想要停止当前的计数吗?", "询问", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) != DialogResult.Yes) return;
}
StartTime = DateTime.Now;
RespCountWhenCountStarted = TotalResp;
CountStarted = true;
miStartCount.Enabled = false;
miStopCount.Enabled = true;
}
private void menuItem20_Click(object sender, System.EventArgs e)
{
if (CountStarted)
{
CountStarted = false;
miStartCount.Enabled = true;
miStopCount.Enabled = false;
int AllResp = TotalResp - RespCountWhenCountStarted;
int RespPerSec = (int)((AllResp*10000000.0)/(float)(DateTime.Now.Ticks-StartTime.Ticks));
MessageBox.Show("响应速度约为 " RespPerSec.ToString() " RPS.");
}
else
{
MessageBox.Show("计数尚未开始,请先启动计数器!");
}
}
private void miUTF8_Click(object sender, System.EventArgs e)
{
miUTF8.Checked = !miUTF8.Checked;
}
private Encoding GetEncoding()
{
return miUTF8.Checked ? Encoding.UTF8 : Encoding.Default;
}
private void miAlert_Click(object sender, System.EventArgs e)
{
miAlert.Checked = !miAlert.Checked;
}