Beispiel #1
0
        static void Main(string[] args)
        {
            var       file    = File.ReadAllText("./Config/Info.json");
            const int off_set = 10;

            try
            {
                var conf = JObject.Parse(file);

                var hostAut  = conf["autenticacao"]["host"].ToString();
                var portaAut = Int32.Parse(conf["autenticacao"]["porta"].ToString());

                Server server = new Server
                {
                    Services = { Autenticacao.BindService(new Servidor()) },
                    Ports    = { new ServerPort(hostAut, portaAut, ServerCredentials.Insecure) }
                };

                Server serverUsuario = new Server
                {
                    Services = { Usuarios.BindService(new ServidorUsuario()) },
                    Ports    = { new ServerPort(hostAut, portaAut + off_set, ServerCredentials.Insecure) }
                };

                server.Start();
                serverUsuario.Start();

                Console.WriteLine("Servidor de Autenticacao Ativo!");

                Console.WriteLine("Conectando com o servidor de nomes para registrar servico!");

                var hostNome = conf["nomes"]["host"].ToString();
                var portNome = conf["nomes"]["porta"].ToString();

                var channel = new Channel(hostNome + ":" + portNome, ChannelCredentials.Insecure);

                var client = new ServidorNomes.Nomes.NomesClient(channel);

                RegistroServico registro = new RegistroServico();
                registro.Host    = hostAut;
                registro.Porta   = portaAut;
                registro.Servico = "Autenticacao";

                registro.Estado         = new Estado();
                registro.Estado.Cpu     = Diagnostico.ObterUsoCpu();
                registro.Estado.Memoria = Diagnostico.ObterUsoMemoria();

                var resp = client.Cadastrar(registro);

                if (resp.Error != 0)
                {
                    throw new Exception("Erro ao cadastrar servico!\n" + resp.Message);
                }

                Console.WriteLine(resp.Message);

                Console.WriteLine("Levantando listener udp para aguardar conexoes de confirmacao de ativo");
                Socket     receiver = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                UdpClient  listener = new UdpClient(portaAut);
                IPEndPoint groupEP  = new IPEndPoint(IPAddress.Any, Convert.ToInt32(portaAut));

                while (true)
                {
                    Console.WriteLine("Tentando receber algo");
                    byte[] x = listener.Receive(ref groupEP);
                    Console.WriteLine("Recebi conexao!");
                    string mess = Encoding.ASCII.GetString(x);

                    IPAddress broadcast = IPAddress.Parse(hostNome);

                    byte[]     sendbuf = Encoding.ASCII.GetBytes("Servidor Ativo");
                    IPEndPoint ep      = new IPEndPoint(broadcast, Convert.ToInt32(portNome));

                    receiver.SendTo(sendbuf, ep);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Erro ocorrido ao iniciar servidor de autenticacao!\n" + e.Message);
            }
        }