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; } }
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 }); }