在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#网络编程 → SOCKET调试工具与压力测试小工具源代码

SOCKET调试工具与压力测试小工具源代码

C#网络编程

下载此实例
  • 开发语言:C#
  • 实例大小:0.39M
  • 下载次数:76
  • 浏览次数:1923
  • 发布时间:2017-04-07
  • 实例类别:C#网络编程
  • 发 布 人:砀山斩妖
  • 文件格式:.rar
  • 所需积分:2
 相关标签: Socket c 调试工具 工具 测试

实例介绍

【实例简介】

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;
		}

实例下载地址

网友评论

第 1 楼 yhqssx123 发表于: 2017-04-14 13:05 50
没有用啊!

支持(0) 盖楼(回复)

发表评论

(您的评论需要经过审核才能显示)

查看所有1条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警