private void ReadAndAck( Stream stream, string name, CancellationToken token, CapService capService ) { var stringReader = new CapReader (stream); var stringWriter = new StreamWriter (stream); while (!token.IsCancellationRequested) { try { var command = stringReader.ReadCommand(); Logger.InfoOut ( command.ToString() ); var response = capService.CreateResponse( command ); Logger.InfoOut( "Server {0} sending" + "\n>> ", response ); stringWriter.WriteLine( response ); stringWriter.Flush(); } catch (Exception e) { Logger.ErrOut (e.ToString ()); break; } } }
public void Start( CancellationToken token ) { _newsock.Bind(_ipep); _newsock.Listen(10); Console.WriteLine("Waiting for a client..."); var client = _newsock.Accept(); var newclient = (IPEndPoint)client.RemoteEndPoint; Console.WriteLine("Connected with {0} at port {1}", newclient.Address, newclient.Port); using (var ns = new NetworkStream (client)) { var mp = new TcpMultiplexer (); var capService = new CapService (mp); var rwStream = mp.CreateStream (CapName, TcpMultiplexer.Direction.InOut); var t1 = Task.Factory.StartNew (() => ReadAndAck (rwStream, CapName, token, capService)); t1.Wait (token); Console.WriteLine ("Disconnected from {0}", newclient.Address); ns.Close (); } }