using Grpc.Core; using System; using System.Threading; using System.Threading.Tasks; using CloudServiceDAO; namespace server { class Program { const int secureport = 8445 ; const int insecureport = 50051; private static readonly AutoResetEvent _closingEvent = new AutoResetEvent(false); static void Main(string[] args) { var serverCertificate = File.ReadAllText(@"server.pem"); var serverKey = File.ReadAllText(@"server.key"); var clientCertificate = File.ReadAllText(@"ca.pem"); var keyCertPair = new KeyCertificatePair(serverCertificate, serverKey); var serverCredentials = new SslServerCredentials(new[] { keyCertPair }, clientCertificate, SslClientCertificateRequestType.RequestAndVerify); Server server = null; try { server = new Server() { Services = { servicioDAOService.BindService(new IDAOServices()) }, Ports = { new ServerPort("0.0.0.0", secureport, serverCredentials), new ServerPort("0.0.0.0", insecureport, ServerCredentials.Insecure) } }; server.Start(); Console.WriteLine("El servidor esta escuchando por el puerto seguro: " + secureport); Console.WriteLine("El servidor esta escuchando por el puerto ineguro: " + insecureport); Task.Factory.StartNew(() => { while (true) { Thread.Sleep(1000); } }); Console.CancelKeyPress += ((s, a) => { Console.WriteLine("Bye!"); _closingEvent.Set(); }); _closingEvent.WaitOne(); } catch (IOException e) { Console.WriteLine("Falla al levantar servicio: " + e.Message); throw; } finally { if (server != null) { server.ShutdownAsync().Wait(); } } } } }