⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.cs

📁 一个打包好的.NET环境下的TCP插口组件
💻 CS
字号:
using System;
using System.Net.Sockets;
using System.Threading;
using XYNetSocketLib;

namespace XYNetSocketTest
{
	class Test
	{	
		private static XYNetServer myServer = null;

		private static void ExceptionHandler(Exception oBug)
		{
			System.Console.Out.WriteLine("Error: " + oBug.Message);
		}

		private static void ConnectionFilter(String sRemoteAddress, int nRemotePort, Socket sock)
		{
			System.Console.Out.WriteLine("Connection request from " + sRemoteAddress + ":" + nRemotePort.ToString());
		}
	
		private static void BinaryInputHandler(String sRemoteAddress, int nRemotePort, Byte[] pData)
		{
			System.Console.Out.WriteLine("Thread count = " + myServer.GetThreadCount().ToString());
			System.Console.Out.WriteLine("Client count = " + myServer.GetClientCount().ToString());
			System.Console.Out.WriteLine("Server received binary data from " + sRemoteAddress + ":" + nRemotePort.ToString());
			System.Console.Out.WriteLine(XYNetCommon.BinaryToString(pData));
			if(myServer.SendBinaryData(sRemoteAddress, nRemotePort, pData))
				System.Console.Out.WriteLine("Binary reply sent");
		}

		private static void StringInputHandler(String sRemoteAddress, int nRemotePort, String sData)
		{
			System.Console.Out.WriteLine("Thread count = " + myServer.GetThreadCount().ToString());
			System.Console.Out.WriteLine("Client count = " + myServer.GetClientCount().ToString());
			System.Console.Out.WriteLine("Server received string data from " + sRemoteAddress + ":" + nRemotePort.ToString());
			System.Console.Out.WriteLine(sData);
			if(myServer.SendStringData(sRemoteAddress, nRemotePort, sData))
				System.Console.Out.WriteLine("String reply sent");
		}

		[STAThread]
		static void Main(string[] args)
		{
			try
			{
				if(args.Length==1)
				{
					myServer = new XYNetServer("", Convert.ToInt32(args[0]), 5, 10);
					myServer.SetConnectionFilter(new ConnectionFilterDelegate(Test.ConnectionFilter));
					myServer.SetExceptionHandler(new ExceptionHandlerDelegate(Test.ExceptionHandler));
					myServer.SetBinaryInputHandler(new BinaryInputHandlerDelegate(Test.BinaryInputHandler));
					myServer.SetStringInputHandler(new StringInputHandlerDelegate(Test.StringInputHandler));
					if(myServer.StartServer()==false) throw myServer.GetLastException();
					Thread.Sleep(60000);
					System.Console.Out.WriteLine("Thread count: " + myServer.GetThreadCount().ToString());
					System.Console.Out.WriteLine("Client count: " + myServer.GetClientCount().ToString());
					myServer.StopServer();
					System.Console.Out.WriteLine("Done!");
				}
				else if(args.Length==2)
				{
					const int nSize = 100;
					const int nPause = 10;
					XYNetClient[] pClients = new XYNetClient[nSize];
					for(int i=0;i<nSize;i++)
					{
						pClients[i] = new XYNetClient(args[0], Convert.ToInt32(args[1]));
						if(pClients[i].Connect()==false) throw pClients[i].GetLastException();
						Thread.Sleep(nPause);
					}
					for(int i=0;i<nSize;i++)
					{
						if(pClients[i].SendStringData("Text sent as string data")==false)
							throw pClients[i].GetLastException();
						Thread.Sleep(nPause);
					}
					for(int i=0;i<nSize;i++)
					{
						Object[] pData = pClients[i].ReceiveData();
						if(pData==null) throw pClients[i].GetLastException();
						String sData = (String)(pData[1]);
						System.Console.Out.WriteLine("String data from server: " + sData);
						Thread.Sleep(nPause);
					}
					for(int i=0;i<nSize;i++)
					{
						if(pClients[i].SendBinaryData(XYNetCommon.StringToBinary("Text sent as binary data"))==false)
							throw pClients[i].GetLastException();
						Thread.Sleep(nPause);
					}
					for(int i=0;i<nSize;i++)
					{
						Object[] pData = pClients[i].ReceiveData();
						if(pData==null) throw pClients[i].GetLastException();
						Byte[] pData2 = (Byte[])(pData[0]);
						System.Console.Out.WriteLine("Binary data from server: " + XYNetCommon.BinaryToString(pData2));
						Thread.Sleep(nPause);
					}
					for(int i=0;i<nSize;i++)
					{
						pClients[i].Reset();
					}
				}
				else throw new Exception("Invalid number of arguments");
			}
			catch(Exception oBug)
			{
				System.Console.Out.WriteLine("Error Type: " + oBug.GetType().Name);
				System.Console.Out.WriteLine("Error Message: " + oBug.Message);
				System.Console.Out.WriteLine("Error Source: " + oBug.Source);
				System.Console.Out.WriteLine("Error StackTrace: " + oBug.StackTrace);
				if(args.Length>0) System.Console.Out.WriteLine("arg0 = " + args[0]);
				if(args.Length>1) System.Console.Out.WriteLine("arg1 = " + args[1]);
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -