/BeetleX

high performance dotnet core socket tcp communication components, support million connections online

Primary LanguageC#Apache License 2.0Apache-2.0

BeetleX

high performance dotnet core socket tcp communication components support ssl

Extended Components

Using

Install-Package BeetleX -Version 1.3.7.2

Server

    class Program : ServerHandlerBase
    {
        private static IServer server;

        public static void Main(string[] args)
        {
           
            server = SocketFactory.CreateTcpServer<Program>();
            //server.Options.DefaultListen.CertificateFile = "text.pfx";
            //server.Options.DefaultListen.SSL = true;
            //server.Options.DefaultListen.CertificatePassword = "123456";
            server.Open();
            Console.Write(server);
            Console.Read();
        }
        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            var pipeStream = e.Stream.ToPipeStream();
            string name = pipeStream.ReadLine();
            Console.WriteLine(name);
            pipeStream.WriteLine("hello " + name);
            e.Session.Stream.Flush();
            base.SessionReceive(server, e);
        }
    }

Client

     TcpClient client = SocketFactory.CreateClient<TcpClient>("127.0.0.1", 9090);
     //ssl
     //TcpClient client = SocketFactory.CreateSslClient<TcpClient>("127.0.0.1", 9090, "localhost");
     while (true)
     {
         Console.Write("Enter Name:");
         var line = Console.ReadLine();
         client.Stream.ToPipeStream().WriteLine(line);
         client.Stream.Flush();
         var reader = client.Read();
         line = reader.ToPipeStream().ReadLine();
         Console.WriteLine(line);
     }

Async client

     AsyncTcpClient client = SocketFactory.CreateClient<AsyncTcpClient>("127.0.0.1", 9090);
     //SSL
     //AsyncTcpClient client = SocketFactory.CreateSslClient<AsyncTcpClient>("127.0.0.1", 9090, "serviceName");
     Client.AutoReceive = false;
     while (true)
     {
         var line = Console.ReadLine();
         var result = await Client.ReceiveFrom(s => s.WriteLine(line));
         //or
         //Client.Send(s => s.WriteLine(line));
         //result = await Client.Receive();
         Console.WriteLine(result.ReadLine());
     }

Framework benchmarks last test status

https://tfb-status.techempower.com/

2019-08-01 result for .net

Performance testing

Server:E3-1230V2 Bandwidth:10Gb

1K connections

5K connections

10K connections

50k connections

1m connections