Exemplo n.º 1
0
        public void ConectarDevolta(
            string ipLocal,
            string ipRemoto,
            int portaLocal,
            int portaRemota,
            string meuNome)
        {
            //Thread.Sleep(1000);
            try
            {
                // setando essas variaveis, pois o jogador que inicia a partida
                // não às tem antes do jogador adversario se conectar
                _ipRemoto    = ipRemoto;
                _portaRemota = portaRemota;

                // criar canal de conexao com o outro jogador
                var channel = new Channel($"{_ipRemoto}:{_portaRemota}", ChannelCredentials.Insecure);
                // conectar com o outro jogador
                _client = new GrpcBizingoClient.GrpcBizingoClientImpl(new BizingoRpc.BizingoRpcClient(channel));
                // chamada rpc para testar a conexao
                MensagemConexao resposta = _client.Conectar(ipLocal, ipRemoto, portaLocal, portaRemota, meuNome);
                // coloca mensagem no chat para avisar que a conexao foi sucedida
                _appendMessage($"{resposta.MeuNome} conectou-se de {resposta.IpLocal}:{resposta.PortaLocal}!");
                // comeca o jogo
                _setGameOver(false);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
Exemplo n.º 2
0
 /*
  *   Essa funcao sera usada quando algum jogador tentar se conectar
  *   com outro jogador. Ela tambem inicia o processo de conexao do jogador
  *   que iniciou a partida com o jogador que entrou depois
  */
 public void ConectarComAdversario()
 {
     try
     {
         // criar canal de conexao com o outro jogador
         var channel = new Channel($"{_ipRemoto}:{_portaRemota}", ChannelCredentials.Insecure);
         // conectar com o outro jogador
         _client = new GrpcBizingoClient.GrpcBizingoClientImpl(new BizingoRpc.BizingoRpcClient(channel));
         // chamada rpc para testar a conexao
         MensagemConexao resposta = _client.Conectar(_ipLocal, _ipRemoto, _portaLocal, _portaRemota, _meuNome);
         // comecar o proprio servidor para que o outro jogador tambem se conecte
         Thread t = new Thread(() => IniciarServidor());
         t.Start();
         //fazer chamada rpc que faz com que o outro jogador se conecte
         Flag f = _client.ConectarDevolta(resposta.IpLocal, resposta.IpRemoto, resposta.PortaLocal, resposta.PortaRemota, resposta.MeuNome);
         // mensagem de quando um player se conecta com outro
         _appendMessage($"conectou-se com jogador {resposta.MeuNome} de {resposta.IpLocal}:{resposta.PortaLocal}!");
         // iniciar partida
         _setGameOver(false);
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
         throw;
     }
 }
 public MensagemConexao Conectar(
     string ipLocal,
     string ipRemoto,
     int portaLocal,
     int portaRemota,
     string meuNome
     )
 {
     try
     {
         MensagemConexao c = new MensagemConexao
         {
             IpLocal     = ipLocal,
             IpRemoto    = ipRemoto,
             PortaLocal  = portaLocal,
             PortaRemota = portaRemota,
             MeuNome     = meuNome
         };
         MensagemConexao m = client.Conectar(c);
         return(m);
     }
     catch (RpcException e)
     {
         Console.WriteLine(e);
         throw;
     }
 }
 public Flag TratarConectarDevolta(MensagemConexao request)
 {
     // conectar com adversario
     _conectarDevolta(_ipLocal, _ipRemoto, _portaLocal, _portaRemota, _meuNome);
     return(new Flag
     {
         G = true
     });
 }
 public override Task <MensagemConexao> Conectar(MensagemConexao request, ServerCallContext context)
 {
     try
     {
         return(Task.FromResult(TratarConectar(request)));
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
         throw;
     }
 }
 public MensagemConexao TratarConectar(MensagemConexao request)
 {
     _portaRemota    = request.PortaLocal;
     _ipRemoto       = request.IpLocal;
     _nomeAdversario = request.MeuNome;
     return(new MensagemConexao
     {
         IpLocal = _ipLocal,
         IpRemoto = _ipRemoto,
         PortaLocal = _portaLocal,
         PortaRemota = _portaRemota,
         MeuNome = _meuNome
     });
 }