十年河东,十年河西,莫欺少年穷
学无止境,精益求精
1、安装包
2、server端
using BeetleX; using BeetleX.EventArgs; using System;namespace BTcp {class Program : BeetleX.ServerHandlerBase{static int Number = 0;private static BeetleX.IServer mServer;static void Main(string[] args){mServer = SocketFactory.CreateTcpServer<Program>();mServer.Options.DefaultListen.Port = 9090;mServer.Options.DefaultListen.Host = "127.0.0.1";mServer.Open();Console.WriteLine(mServer.Status);Console.Read();}protected override void OnLogToConsole(IServer server, ServerLogEventArgs e){Console.WriteLine($"{DateTime.Now}\t{e.Type}\t{e.Session?.RemoteEndPoint} {e.Message}");}public override void SessionReceive(IServer server, SessionReceiveEventArgs e){base.SessionReceive(server, e);var stream = e.Stream.ToPipeStream();if (stream.TryReadLine(out string line)){Number++;Console.WriteLine(line+ ":"+Number);stream.WriteLine($"{DateTime.Now}");e.Stream.Flush();}}} }
3、客户端
using BeetleX; using BeetleX.Clients; using System; using System.Net.Sockets; using System.Threading.Tasks;namespace BTcpClient {class Program{static void Main(string[] args){Parallel.For(0, 10000, i =>{AsyncTcpClient client = SocketFactory.CreateClient<AsyncTcpClient>("127.0.0.1", 9090);client.ClientError = (o, e) =>{Console.WriteLine("client error {0}@{1}", e.Message, e.Error);};client.DataReceive = (o, e) =>{Console.WriteLine(e.Stream.ToPipeStream().ReadLine());};var pipestream = client.Stream.ToPipeStream();pipestream.WriteLine("hello BeetleX");client.Stream.Flush();});Console.Read();}} }
4、测试结果
模拟短时间内,建立10000个链接