static void ReceiveCallback(long session, byte[] buffer, int offset, int length)
 {
     service.SendToSession(session, buffer, offset, length, true);
 }
        static void Main(string[] args)
        {
            rand = new ThreadLocal <Random>(() => { return(new Random(Environment.TickCount)); });

            //TcpServiceConfig config = new TcpServiceConfig();
            //config.ReceviceBuffer = ReceiveBuffer;
            //config.SendBuffer = ReceiveBuffer;
            //config.SendCount = 10;
            //config.MaxConnectionCount = MaxConnectionCount;
            //config.UpdateSessionIntval = 50;
            //config.SessionReceiveTimeout = 30 * 1000;
            //config.MessageFactoryAssemblyName = "NetService";
            //config.MessageFactoryTypeName = "NetService.Message.SimpleBinaryMessageFactory";

            service = new TcpService("SimpleClient.xml");
            service.ConnectionEvent += new SessionConnectionEvent(ConnectionCallback);
            service.CloseEvent      += new SessionCloseEvent(CloseCallback);
            service.ReceiveEvent    += new SessionReceiveEvent(ReceiveCallback);
            service.Run();
            Console.WriteLine("starting server!");
            int update = Environment.TickCount;

            while (true)
            {
                System.Threading.Thread.Sleep(50);

                Parallel.ForEach(_sessions, (KeyValuePair <long, long> s) =>
                {
                    byte[] buf = new byte[1000];
                    for (int i = 0; i < buf.Length; ++i)
                    {
                        buf[i] = (byte)i;
                    }
                    service.SendToSession(s.Key, buf, 0, buf.Length, false);
                });

                if (Console.KeyAvailable)
                {
                    ConsoleKeyInfo key = Console.ReadKey(true);
                    if (key.KeyChar == '1')
                    {
                        service.Stop();
                    }
                    else if (key.KeyChar == '2')
                    {
                        service.Run();
                    }
                    else if (key.KeyChar == '3')
                    {
                    }
                    else if (key.KeyChar == '4')
                    {
                        service.StartConnect(IPString, Port, 1000, 1000, null);
                    }
                    else if (key.KeyChar == 'q')
                    {
                        break;
                    }
                }

                if (Environment.TickCount - update > 5000)
                {
                    Console.WriteLine(service.ToString());
                    update = Environment.TickCount;
                }
            }

            service.Stop();
        }