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; } }
/* * 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; } }