コード例 #1
0
ファイル: Form2.cs プロジェクト: Cris969/SOGrupo1
        public void mensaje_chat(string [] mensaje)
        {
            delegado_conMensaje mensaje_chat = new delegado_conMensaje(poner_mensaje);

            listBox1_msg.Invoke(mensaje_chat, new object[] { mensaje });
        }
コード例 #2
0
ファイル: Form2.cs プロジェクト: Cris969/SOGrupo1
        public void dar_tirada(string [] mensaje)
        {
            delegado_conMensaje tirada = new delegado_conMensaje(nueva_tirada);

            this.Invoke(tirada, new object[] { mensaje });
        }
コード例 #3
0
ファイル: Form1.cs プロジェクト: Cris969/SOGrupo1
        private void AtenderServidor()
        {
            while (true)
            {
                //Recibimos mensaje del servidor
                byte[] data = new byte[80];
                socket.Receive(data);
                string[]  mensaje      = Encoding.ASCII.GetString(data).Split('\0');
                string [] trozoMensaje = mensaje[0].Split('/');
                int       codigo       = Convert.ToInt32(trozoMensaje[0]);

                switch (codigo)
                {
                case 0:     //Respuesta al login

                    delegado_vacio logeo;
                    // 0/1/apodo -> login correcto
                    // 0/-1 -> login erróneo
                    if (Convert.ToInt32(trozoMensaje[1]) == -1)
                    {
                        logeo = new delegado_vacio(logeo_incorrecto);
                        this.Invoke(logeo);
                    }
                    else
                    {
                        apodo = Convert.ToString(trozoMensaje[2]);
                        logeo = new delegado_vacio(logeo_correcto);
                        label_info_apodo.Invoke(logeo);
                    }
                    break;

                case 4:     //Respuesta al registro

                    delegado_vacio registro;
                    // 4/1 -> registro correcto
                    // 4/0 -> error en el registro
                    if (Convert.ToInt32(trozoMensaje[1]) == 1)
                    {
                        registro = new delegado_vacio(registro_correcto);
                        Invoke(registro);
                    }
                    else
                    {
                        registro = new delegado_vacio(registro_incorrecto);
                        this.Invoke(registro);
                    }
                    break;

                case 6:     //Notificación de cambio en lista de conectados

                    delegado_conMensaje notificacion = new delegado_conMensaje(ListarConectados);
                    this.Invoke(notificacion, new object[] { trozoMensaje });
                    break;

                case 8:     //Respuesta a la peticion de eliminacion de usuario

                    delegado_vacio elminiar_usuario;
                    //8/1 -> eliminacion correcta
                    //8/0 -> eliminacion incorrecta
                    if (Convert.ToInt32(trozoMensaje[1]) == 1)
                    {
                        elminiar_usuario = new delegado_vacio(eliminacion_correcta);
                        this.Invoke(elminiar_usuario);
                    }
                    else if (Convert.ToInt32(trozoMensaje[1]) == 0)
                    {
                        MessageBox.Show("Error al eliminar la cuenta");
                    }
                    break;

                case 9:     //Mensaje relacionado con partida

                    // 9/tipo de mensaje/...
                    //Volvemos a analizar la subpeticion
                    int    subcodigo = Convert.ToInt32(trozoMensaje[1]);
                    string respuesta;

                    switch (subcodigo)
                    {
                    case 1:         //Inicio de partida

                        // 9/1/idChat/1/color -> el chat se inicia
                        // 9/1/idChat/0 -> el chat no se iniciara
                        id_partida = Convert.ToInt32(trozoMensaje[2]);
                        color      = Convert.ToInt32(trozoMensaje[4]);
                        if (Convert.ToInt32(trozoMensaje[3]) == 1)
                        {
                            //Ponemos en marcha el thread que ejecutara el formulario
                            ThreadStart chat = delegate { crear_formulario(id_partida, color); };
                            Thread      t    = new Thread(chat);
                            t.Start();
                        }


                        break;

                    case 2:         //Invitacion a partida

                        //9/2/host/idPartida
                        string host = trozoMensaje[2];
                        id_partida = Convert.ToInt32(trozoMensaje[3]);

                        DialogResult dr1 = MessageBox.Show(host + " te invita a jugar. ¿Aceptar invitación?", "ACEPTAR INVITACIÓN", MessageBoxButtons.YesNo);
                        switch (dr1)
                        {
                        case DialogResult.No:
                            //Construimos la respuesta para el servidor: 7/2/idChat/0
                            respuesta = ("9/2/" + id_partida + "/0\0");
                            socket.Send(Encoding.ASCII.GetBytes(respuesta));
                            break;

                        case DialogResult.Yes:
                            //Construimos la respuesta para el servidor: 7/2/idChat/1
                            respuesta = ("9/2/" + id_partida + "/1\0");
                            socket.Send(Encoding.ASCII.GetBytes(respuesta));
                            break;
                        }
                        break;

                    case 5:         //Notificacion con movimiento

                        // 9/5/id_partida/color/ficha/nueva_pos
                        int pos = posicion_formulario(formularios_partida, Convert.ToInt32(trozoMensaje[2]));
                        formularios_partida[pos].dar_tirada(trozoMensaje);         //Le damos el mensaje al formulario 2
                        break;

                    case 6:                                                       //Mensaje para chat 9/6/id_partida/mensaje
                        int posicion = posicion_formulario(formularios_partida, Convert.ToInt32(trozoMensaje[2]));
                        formularios_partida[posicion].mensaje_chat(trozoMensaje); //A traves de la funcion mensaje le pasamos la info al formulario del chat
                        break;
                    }

                    break;

                default:
                    MessageBox.Show("Mensaje recibido erróneo.");
                    break;
                }
            }
        }