private void buttonEnviarMensagem_Click(object sender, EventArgs e) { byte[] msg = Encoding.UTF8.GetBytes(tb_enviarMensagem.Text); //para nao enviar mensagens sem nada if (msg.Length == 0) { return; } // LIMPA A CAIXA DE TEXTO tb_enviarMensagem.Text = ""; //verificaçoes if (Form_Autenticar.EnviarDadosServidor(ProtocolSICmdType.DATA, msg) == 0) { MessageBox.Show("Comunicação falhou"); return; } if (!Form_Autenticar.LerRespostaServidor()) { MessageBox.Show("Integridade inválida"); return; } }
private void bt_posicao6_Click(object sender, EventArgs e) { painel_baliza.Enabled = false; byte[] msg = Encoding.UTF8.GetBytes("6"); Form_Autenticar.EnviarDadosServidor(ProtocolSICmdType.USER_OPTION_7, msg); painel_esperar.Visible = true; }
private void bt_login_Click(object sender, EventArgs e) { try { byte[] msg = Encoding.UTF8.GetBytes(tb_username.Text + "_Ø_" + tb_password.Text); //verificar se a resposta do servidor é OK if (Form_Autenticar.EnviarDadosServidor(ProtocolSICmdType.USER_OPTION_2, msg) == 1 && Form_Autenticar.LerRespostaServidor()) { Form_Autenticar.nickname = tb_username.Text; Form_Jogo form = new Form_Jogo(); form.ShowDialog(); /*FormPrincipal form = new FormPrincipal(TextBoxUsername); * form.ShowDialog();*/ } else // ou se a resposta é NOK { lb_validar.Visible = true; } } catch (SocketException) { MessageBox.Show("Não foi possivel conectar ao servidor tente outra vez"); return; } }
private void btn_sala_Click(object sender, EventArgs e) { string nomeSala = tb_sala.Text; byte[] msg = Encoding.UTF8.GetBytes(nomeSala); if (Form_Autenticar.EnviarDadosServidor(ProtocolSICmdType.USER_OPTION_4, msg) == 1 && Form_Autenticar.LerRespostaServidor()) { tb_sala.ResetText(); bt_enviarMensagem.Enabled = true; painel_baliza.Enabled = true; labelEscolha.Visible = false; labelResult.Visible = true; labelResultado.Visible = true; tb_sala.Visible = false; bt_sala.Visible = false; string funcao = receberDadosServidor(); layoutFuncao(funcao); funAtual = funcao; // saber se é o unico jogador para //# painel_esperar.Visible = true; painel_esperar.BringToFront(); pedirDados(); //iniciar o contador para verificar se ha mensagens novas de 2 em 2 segundos InitTimer(); // colocar automaticamente o cursor na caixa e mostra o form ActiveControl = tb_enviarMensagem; this.Show(); lb_nomesalas.Text = nomeSala; } else // voltar ao form de entrada { MessageBox.Show("A sala não está disponível"); } }
private void pedirDados() { //objetivo: efetuar o pedido de dados do cliente ao servidor // VARIAVEL PARA RECEBER OS DADOS StringBuilder textAux = new StringBuilder(); //para saber quanto temos na text box atualmente byte[] lengthEmBytes = Encoding.UTF8.GetBytes(tb_sala.TextLength.ToString()); //verificaçoes if (Form_Autenticar.EnviarDadosServidor(ProtocolSICmdType.USER_OPTION_5, lengthEmBytes) == 0) { MessageBox.Show("Comunicação falhou"); return; } if (!Form_Autenticar.LerRespostaServidor()) { MessageBox.Show("Integridade inválida"); return; } // ENQUANTO HOUVER COISAS PARA RECEBER (OS DADOS PODEM TER SIDO DIVIDIDOS PARA SEREM ENVIADOS) while (true) { try { //le da stream Form_Autenticar.networkStream.Read(Form_Autenticar.protocolSI.Buffer, 0, Form_Autenticar.protocolSI.Buffer.Length); // SE FOR O FIM DA RESPOSTA if (Form_Autenticar.protocolSI.GetCmdType() == ProtocolSICmdType.EOF) { // SAI FORA DO WHILE break; } // SENÃO, E se a comunicação for do tipo data else if (Form_Autenticar.protocolSI.GetCmdType() == ProtocolSICmdType.DATA) { // RECEBE, DECIFRA, ESCREVE OS DADOS PARA A STRING textAux.Append(Convert.ToBase64String(Form_Autenticar.decifrarDadosServidor())); } } catch (Exception e) { MessageBox.Show("Erro ao atualizar conversas"); break; } } Form_Autenticar.Enviar_ACK(); byte[] dadosDecifrados = Convert.FromBase64String(textAux.ToString()); //receber hash, decifrar e enviar ack byte[] hash_recebida = Form_Autenticar.Receber_Hash(); if (Form_Autenticar.Integridade_Valida(hash_recebida, dadosDecifrados) == false) { return; } // ATUALIZA O TEXTO DA TEXTBOX tb_sala.AppendText(Encoding.UTF8.GetString(dadosDecifrados)); }