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(); }