亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? serverform.cs

?? rudp可靠保障得udp傳輸
?? CS
字號:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Diagnostics;

using Helper.Net.RUDP;
using Helper.Net.UDT;

namespace Test.Application
{
	public partial class ServerForm : Form
	{

		#region Variables

		private Thread thread;

		//---- Sockets
		private RUDPSocket rudpSocket;
		private RUDPSocket newRUDPSocket;

		private Socket tcpSocket;
		private Socket newTCPSocket;

		private UDTSocket udtSocket;
		private UDTSocket newUDTSocket;

		private byte[] buffer = new byte[32 * 1024];

		//---- Rates
		private double _currentRate = -1;
		long CurrentTotalBytes;

		private double _rate = -1;
		long TotalBytes;
		
		Stopwatch _globalStopwatch = new Stopwatch();
		Stopwatch _currentStopwatch = new Stopwatch();
		
		int _currentRateInterval = 1000;

		//---- Graph
		private Test.Helper.Windows.LineHandle _perfLineAverage;
		private Test.Helper.Windows.LineHandle _perfLineCurrent;

		#endregion

		#region Constructor

		public ServerForm()
		{
			InitializeComponent();
			txtIPAddress.Text = Dns.GetHostAddresses(Dns.GetHostName())[0].ToString();

			_perfLineAverage = performanceGraph.AddLine("AVERAGE", Color.White);
			_perfLineCurrent = performanceGraph.AddLine("CURRENT", Color.Red);
		}

		#endregion

		#region Events...

		private void btnStart_Click(object sender, EventArgs e)
		{
			btnStart.Enabled = false;
			thread = new Thread(new ThreadStart(StartBenchmark));
			thread.Start();

			// Data display refresh
			System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
			timer.Interval = 1000;
			timer.Tick += new EventHandler(timer_Tick_Data);
			timer.Start();

			// Performance graph refresh
			timer = new System.Windows.Forms.Timer();
			timer.Interval = 50;
			timer.Tick += new EventHandler(timer_Tick_Graph);
			timer.Start();
		}

		void timer_Tick_Data(object sender, EventArgs e)
		{
			txtRate.Text = ((int)_rate).ToString() + " KBytes/seconds";

			txtCurrentRate.Text = ((int)_currentRate).ToString() + " KBytes/seconds";

			txtTotalBytes.Text = "" + (TotalBytes / 1024);

			if (!_globalStopwatch.IsRunning)
				txtSeconds.Text = "0";
			else
				txtSeconds.Text = "" + _globalStopwatch.ElapsedMilliseconds / 1000;
		}

		void timer_Tick_Graph(object sender, EventArgs e)
		{
			if (_rate > -1)
				performanceGraph.Push((int)_rate, "AVERAGE");
			if (_currentRate > -1)
				performanceGraph.Push((int)_currentRate, "CURRENT");
			performanceGraph.UpdateGraph();
		}

		#endregion

		#region StartBenchmark

		private void StartBenchmark()
		{
			//---- 1 Accept
			if (rbRUDP.Checked)
			{
				rudpSocket = new RUDPSocket();

				rudpSocket.Bind(new IPEndPoint(IPAddress.Parse(txtIPAddress.Text), Int32.Parse(txtIPPort.Text)));

				rudpSocket.BeginAccept(new AsyncCallback(OnAccept_RUDP), null);
			}
			else if (rbUDT.Checked)
			{
				udtSocket = new UDTSocket(AddressFamily.InterNetwork);

				udtSocket.Bind(new IPEndPoint(IPAddress.Parse(txtIPAddress.Text), Int32.Parse(txtIPPort.Text)));
				udtSocket.Listen(100);

				udtSocket.BeginAccept(new AsyncCallback(OnAccept_UDT), null);
			}
			else
			{
				tcpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

				tcpSocket.Bind(new IPEndPoint(IPAddress.Parse(txtIPAddress.Text), Int32.Parse(txtIPPort.Text)));
				tcpSocket.Listen(100);

				tcpSocket.BeginAccept(new AsyncCallback(OnAccept_TCP), null);
			}
		}

		#endregion

		#region OnAccept_RUDP

		internal void OnAccept_RUDP(IAsyncResult result)
		{
			//---- Get the socket
			newRUDPSocket = rudpSocket.EndAccept(result);

			_globalStopwatch.Stop();
			_currentStopwatch.Stop();
			_globalStopwatch.Start();
			_currentStopwatch.Start();

			//---- Lesson for accept
			rudpSocket.BeginAccept(new AsyncCallback(OnAccept_RUDP), null);

			//---- Start receiving
			newRUDPSocket.BeginReceive(new AsyncCallback(OnReceive_RUDP), Environment.TickCount);
		}

		#endregion

		#region OnAccept_TCP

		internal void OnAccept_TCP(IAsyncResult result)
		{
			//---- Get the socket
			newTCPSocket = tcpSocket.EndAccept(result);

			_globalStopwatch.Stop();
			_currentStopwatch.Stop();
			_globalStopwatch.Start();
			_currentStopwatch.Start();

			//---- Lesson for accept
			tcpSocket.BeginAccept(new AsyncCallback(OnAccept_TCP), null);

			//---- Start receiving
			newTCPSocket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(OnReceive_TCP), Environment.TickCount);
		}

		#endregion

		#region OnAccept_UDT

		internal void OnAccept_UDT(IAsyncResult result)
		{
			//---- Get the socket
			newUDTSocket = udtSocket.EndAccept(result);

			_globalStopwatch.Stop();
			_currentStopwatch.Stop();
			_globalStopwatch.Start();
			_currentStopwatch.Start();

			//---- Lesson for accept
			udtSocket.BeginAccept(new AsyncCallback(OnAccept_UDT), null);

			//---- Start receiving
			newUDTSocket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(OnReceive_UDT), Environment.TickCount);
		}

		#endregion

		#region OnReceive_RUDP

		internal void OnReceive_RUDP(IAsyncResult result)
		{
			if (!newRUDPSocket.Connected)
			{
				OnTransportDisconnected_RUDP();
				return;
			}

			//---- Process the received bytes
			try
			{
				byte[] bytes = newRUDPSocket.EndReceive(result);
				int length = bytes.Length;

				//---- End of connection
				if (bytes == null)
				{
					// Connection closed by peer
					OnTransportDisconnected_RUDP();
					return;
				}

				//---- Current rate
				double seconds;
				int now = Environment.TickCount;
				CurrentTotalBytes += length;
				if (_currentStopwatch.ElapsedMilliseconds > _currentRateInterval)
				{
					seconds = ((double)_currentStopwatch.ElapsedMilliseconds) / 1000;
					_currentRate = ((double)CurrentTotalBytes) / (1024 * seconds);
					_currentStopwatch.Reset();
					_currentStopwatch.Start();
					CurrentTotalBytes = 0;
				}

				//---- Global rate
				TotalBytes += length;
				seconds = ((double)_globalStopwatch.ElapsedMilliseconds) / 1000;
				_rate = ((double)TotalBytes) / (1024 * seconds);
			}
			catch (RUDPSocketException se)
			{
				OnTransportDisconnected_RUDP();
				return;
			}
			catch (Exception e)
			{
				Console.WriteLine(e.Message);
				Console.WriteLine(e.StackTrace);

				OnTransportDisconnected_RUDP();
				return;
			}

			//---- Continue receive packets ... on the SAME socket, to insure
			// we have completely read the socket buffer.
			try
			{
					// if we have closed the socket between the 2 operations
					if (!newRUDPSocket.Connected)
						return;

					// Restart receiving
					newRUDPSocket.BeginReceive(new AsyncCallback(OnReceive_RUDP), Environment.TickCount);
			}
			catch (Exception e)
			{
				OnTransportDisconnected_RUDP();
				return;
			}
		}

		#endregion

		#region OnReceive_TCP

		internal void OnReceive_TCP(IAsyncResult result)
		{
			if (!newTCPSocket.Connected)
			{
				OnTransportDisconnected_TCP();
				return;
			}

			//---- Process the received bytes
			try
			{
				SocketError error = SocketError.Success;
				int length = newTCPSocket.EndReceive(result);

				//---- End of connection
				if (length < 0)
				{
					// Connection closed by peer
					OnTransportDisconnected_TCP();
					return;
				}

				//---- Current rate
				double seconds;
				int now = Environment.TickCount;
				CurrentTotalBytes += length;
				if (_currentStopwatch.ElapsedMilliseconds > _currentRateInterval)
				{
					seconds = ((double)_currentStopwatch.ElapsedMilliseconds) / 1000;
					_currentRate = ((double)CurrentTotalBytes) / (1024 * seconds);
					_currentStopwatch.Reset();
					_currentStopwatch.Start();
					CurrentTotalBytes = 0;
				}

				//---- Global rate
				TotalBytes += length;
				seconds = ((double)_globalStopwatch.ElapsedMilliseconds) / 1000;
				_rate = ((double)TotalBytes) / (1024 * seconds);
			}
			catch (SocketException se)
			{
				OnTransportDisconnected_TCP();
				return;
			}
			catch (Exception e)
			{
				Console.WriteLine(e.Message);
				Console.WriteLine(e.StackTrace);

				OnTransportDisconnected_TCP();
				return;
			}

			//---- Continue receive packets ... on the SAME socket, to insure
			// we have completely read the socket buffer.
			try
			{
				// if we have closed the socket between the 2 operations
				if (!newTCPSocket.Connected)
					return;

				// Restart receiving
				newTCPSocket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(OnReceive_TCP), Environment.TickCount);
			}
			catch (Exception e)
			{
				OnTransportDisconnected_TCP();
				return;
			}
		}

		#endregion

		#region OnReceive_UDT

		internal void OnReceive_UDT(IAsyncResult result)
		{
			if (!newUDTSocket.Connected)
			{
				OnTransportDisconnected_UDT();
				return;
			}

			//---- Process the received bytes
			try
			{
				SocketError error = SocketError.Success;
				int length = newUDTSocket.EndReceive(result);

				//---- End of connection
				if (length < 0)
				{
					// Connection closed by peer
					OnTransportDisconnected_UDT();
					return;
				}

				//---- Current rate
				double seconds;
				int now = Environment.TickCount;
				CurrentTotalBytes += length;
				if (_currentStopwatch.ElapsedMilliseconds > _currentRateInterval)
				{
					seconds = ((double)_currentStopwatch.ElapsedMilliseconds) / 1000;
					_currentRate = ((double)CurrentTotalBytes) / (1024 * seconds);
					_currentStopwatch.Reset();
					_currentStopwatch.Start();
					CurrentTotalBytes = 0;
				}

				//---- Global rate
				TotalBytes += length;
				seconds = ((double)_globalStopwatch.ElapsedMilliseconds) / 1000;
				_rate = ((double)TotalBytes) / (1024 * seconds);
			}
			catch (SocketException se)
			{
				OnTransportDisconnected_UDT();
				return;
			}
			catch (Exception e)
			{
				Console.WriteLine(e.Message);
				Console.WriteLine(e.StackTrace);

				OnTransportDisconnected_UDT();
				return;
			}

			//---- Continue receive packets ... on the SAME socket, to insure
			// we have completely read the socket buffer.
			try
			{
				// if we have closed the socket between the 2 operations
				if (!newUDTSocket.Connected)
					return;

				// Restart receiving
				newUDTSocket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(OnReceive_UDT), Environment.TickCount);
			}
			catch (Exception e)
			{
				OnTransportDisconnected_UDT();
				return;
			}
		}

		#endregion

		#region OnTransportDisconnected_RUDP

		private void OnTransportDisconnected_RUDP()
		{
			try
			{
				rudpSocket.Close();
			}
			catch { }
		}

		#endregion

		#region OnTransportDisconnected_TCP

		private void OnTransportDisconnected_TCP()
		{
			try
			{
				tcpSocket.Close();
			}
			catch { }
		}

		#endregion

		#region OnTransportDisconnected_UDT

		private void OnTransportDisconnected_UDT()
		{
			try
			{
				udtSocket.Close();
			}
			catch { }
		}

		#endregion

		#region Closing

		private void TCPServerForm_FormClosing(object sender, FormClosingEventArgs e)
		{
			try
			{
				if (newTCPSocket != null)
					newTCPSocket.Close();
				if (newRUDPSocket != null)
					newRUDPSocket.Close();
			}
			catch { }
			try
			{
				thread.Abort();
			}
			catch { }
		}

		#endregion

		#region trackBarZoom_Scroll

		private void trackBarZoom_Scroll(object sender, EventArgs e)
		{
			if (trackBarZoom.Value < 1)
				return;
			performanceGraph.MaxPeekMagnitude = trackBarZoom.Value;
			performanceGraph.UpdateGraph();
			performanceGraph.MaxLabel = trackBarZoom.Value + "(Kb/s)";
			labelZoom.Text = "Zoom : " + performanceGraph.MaxPeekMagnitude + " KB/s";
		}

		#endregion

	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区av电影| 1区2区3区精品视频| 成人av电影免费观看| 视频一区欧美日韩| 中文字幕一区二区三区乱码在线| 欧美一卡二卡在线| 色婷婷av一区二区| 国产成人在线视频网站| 蜜臀va亚洲va欧美va天堂 | 蜜桃av一区二区在线观看| 国产精品网站在线| 日韩精品在线一区| 欧美日韩在线播放| 91网页版在线| 成人h动漫精品一区二区 | 91尤物视频在线观看| 激情偷乱视频一区二区三区| 亚洲一区二区偷拍精品| 国产精品久久久久久久午夜片| 欧美va在线播放| 欧美精品xxxxbbbb| 欧美日韩一级二级| 在线免费一区三区| 99麻豆久久久国产精品免费优播| 国产精品一区在线观看乱码 | 色婷婷激情一区二区三区| 东方aⅴ免费观看久久av| 麻豆免费精品视频| 麻豆精品一二三| 男人操女人的视频在线观看欧美| 亚洲午夜羞羞片| 一区二区三区在线免费| 亚洲色图丝袜美腿| 亚洲欧美日韩中文播放 | 成人免费高清视频| 国产iv一区二区三区| 国产永久精品大片wwwapp| 久久se这里有精品| 黄色精品一二区| 狠狠色丁香久久婷婷综| 精品一区二区三区av| 麻豆免费精品视频| 国产一区二区视频在线| 国产一区二区精品久久99| 国内久久婷婷综合| 国产一区二区三区综合| 懂色av中文字幕一区二区三区 | 色国产综合视频| 欧美无砖砖区免费| 欧美二区三区的天堂| 欧美一级久久久久久久大片| 日韩精品中文字幕一区二区三区| 久久蜜臀中文字幕| 国产精品理伦片| 亚洲码国产岛国毛片在线| 一二三区精品视频| 免费观看日韩av| 精彩视频一区二区三区| 国产不卡视频一区| 91在线观看视频| 3d成人动漫网站| 久久久久久久网| 国产精品对白交换视频 | 成人午夜激情片| 99re8在线精品视频免费播放| 91成人免费在线视频| 91精品国产aⅴ一区二区| 久久久久亚洲蜜桃| 亚洲精品欧美在线| 日韩精品成人一区二区三区| 精品一区二区三区免费毛片爱 | 午夜精品一区二区三区电影天堂| 日本不卡一区二区三区高清视频| 国产精品伊人色| 在线观看欧美黄色| 久久久久国产精品厨房| 亚洲精品视频在线| 美女免费视频一区二区| caoporn国产精品| 91精品国产品国语在线不卡| 国产亚洲欧美一区在线观看| 亚洲精品国产a久久久久久 | 在线观看日韩高清av| 欧美大胆人体bbbb| 亚洲特级片在线| 蜜桃视频在线观看一区| 91在线视频播放| 精品99一区二区| 一区二区在线观看视频在线观看| 久久99深爱久久99精品| 欧美在线免费观看亚洲| 久久久久久99精品| 午夜精品久久久久| eeuss鲁片一区二区三区| 欧美一二三区在线观看| 亚洲乱码国产乱码精品精小说| 日韩国产一二三区| 91麻豆成人久久精品二区三区| 精品国产人成亚洲区| 亚洲一区二区高清| 91亚洲精品乱码久久久久久蜜桃| 精品久久久久一区二区国产| 亚洲自拍偷拍九九九| 丁香激情综合五月| 亚洲精品一区二区精华| 午夜电影一区二区| 99国产精品国产精品久久| 精品国产自在久精品国产| 亚洲福利电影网| 色婷婷精品大视频在线蜜桃视频| 国产欧美一区二区三区在线老狼| 日韩av在线免费观看不卡| 欧美网站一区二区| 亚洲欧美另类在线| 东方欧美亚洲色图在线| 久久久青草青青国产亚洲免观| 日韩**一区毛片| 欧美片网站yy| 亚洲一二三四在线观看| 一本色道久久加勒比精品| 国产肉丝袜一区二区| 国产在线精品一区二区夜色| 91麻豆精品国产91久久久资源速度| 亚洲欧美欧美一区二区三区| 99视频精品在线| 亚洲欧美综合另类在线卡通| 国产69精品一区二区亚洲孕妇| 欧美精品一区二区三区蜜桃 | 人人狠狠综合久久亚洲| 欧美肥胖老妇做爰| 日韩和欧美的一区| 91精品欧美一区二区三区综合在| 亚洲一二三区不卡| 欧美视频一区二区三区四区 | 欧美日韩精品二区第二页| 伊人色综合久久天天人手人婷| 色香蕉成人二区免费| 亚洲国产一区二区视频| 欧美性感一类影片在线播放| 亚洲一级二级在线| 欧美日韩国产精品自在自线| 亚洲国产精品久久久男人的天堂| 欧美性xxxxx极品少妇| 香蕉成人啪国产精品视频综合网| 欧美视频中文一区二区三区在线观看 | 国产成人精品aa毛片| 久久久美女艺术照精彩视频福利播放| 美日韩一区二区| 久久久一区二区三区捆绑**| 成人在线一区二区三区| 综合自拍亚洲综合图不卡区| 一本一道综合狠狠老| 午夜日韩在线电影| 日韩久久久久久| 国产高清无密码一区二区三区| 亚洲欧洲无码一区二区三区| 在线看日韩精品电影| 青青草成人在线观看| 26uuu亚洲| 97久久精品人人爽人人爽蜜臀| 一区二区三区四区亚洲| 欧美一级久久久久久久大片| 国产99精品国产| 亚洲影院理伦片| 日韩午夜av一区| 成人av网址在线| 石原莉奈一区二区三区在线观看| 精品毛片乱码1区2区3区| 成人免费精品视频| 五月天国产精品| 日本一区二区免费在线| 色嗨嗨av一区二区三区| 精品一区二区影视| 亚洲精品免费播放| 欧美第一区第二区| 99re亚洲国产精品| 麻豆视频一区二区| 亚洲欧美aⅴ...| 精品久久久久久久人人人人传媒 | 亚洲视频香蕉人妖| 欧美一区二区日韩| 91一区二区在线| 久久国产夜色精品鲁鲁99| 国产精品美女久久久久久久| 欧美喷潮久久久xxxxx| 成人不卡免费av| 美女视频免费一区| 亚洲一区二区综合| 中文字幕乱码日本亚洲一区二区| 欧美日本在线看| av不卡在线播放| 久久99久久久久| 亚洲午夜视频在线观看| 国产清纯在线一区二区www| 欧美视频一区在线观看| av一区二区三区| 国产真实乱子伦精品视频| 五月婷婷色综合| 亚洲天堂免费看| 久久久99精品久久|