public void StartServer(Trainer trainer) { Console.WriteLine("Please enter the server port and press return:"); string port = Console.ReadLine(); ISocket listenSocket = AweSock.TcpListen(int.Parse(port)); Console.WriteLine("Server started"); ISocket client = AweSock.TcpAccept(listenSocket); var inBuf = AwesomeSockets.Buffers.Buffer.New(99999); var outBuf = AwesomeSockets.Buffers.Buffer.New(99999); while (true) { try { //get message Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); Tuple <int, EndPoint> received = AweSock.ReceiveMessage(client, inBuf); stopWatch.Stop(); TimeSpan ts = stopWatch.Elapsed; trainer.timeSinceUpdate = ts.Milliseconds; AwesomeSockets.Buffers.Buffer.FinalizeBuffer(inBuf); //parse message var res = Utils.Deserialize <Dictionary <string, byte[]> >(AwesomeSockets.Buffers.Buffer.GetBuffer(inBuf)); AwesomeSockets.Buffers.Buffer.ClearBuffer(inBuf); //act on message this.HandleInputData(res, trainer); } catch (Exception e) { Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); AwesomeSockets.Buffers.Buffer.ClearBuffer(outBuf); AwesomeSockets.Buffers.Buffer.ClearBuffer(inBuf); trainer.Initialize(); } try { //get response data var outputData = this.GetOutputData(trainer); //write to buffer AwesomeSockets.Buffers.Buffer.ClearBuffer(outBuf); AwesomeSockets.Buffers.Buffer.Add(outBuf, Utils.ObjectToByteArray(outputData)); AwesomeSockets.Buffers.Buffer.FinalizeBuffer(outBuf); //respond int bytesSent = AweSock.SendMessage(client, outBuf); } catch (Exception e) { Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); AwesomeSockets.Buffers.Buffer.ClearBuffer(outBuf); AwesomeSockets.Buffers.Buffer.ClearBuffer(inBuf); trainer.Initialize(); } } Console.ReadLine(); }