예제 #1
0
        private void MensajeRecibido(ConexionTcp conexionTcp, string datos)
        {
            //GUARDAR EN LA BASE DE DATOS EL INTENTO DE CONEXION!!!

            var    paquete = new Paquete(datos);
            string comando = paquete.Comando;

            if (comando == "login")   //AQUI AÑADIMOS MAS TIPOS DE COMANDO
            {
                string        contenido = paquete.Contenido;
                List <string> valores   = Mapa.Deserializar(contenido);

                var msgPack = new Paquete();

                try
                {
                    usuariosTableAdapter.Fill(dataSet11.Usuarios);
                    if (string.IsNullOrEmpty(dataSet11.Usuarios.Select(valores[0]).ToString()))
                    {
                        msgPack = new Paquete("resultado", "Sesion Iniciada.");
                    }
                }
                catch (Exception)
                {
                    msgPack = new Paquete("resultado", "El usuario no existe, registrese.");
                }
                //usuariosTableAdapter.GetData()

                conexionTcp.EnviarPaquete(msgPack);
            }

            if (comando == "register")
            {
                string        contenido = paquete.Contenido;
                List <string> valores   = Mapa.Deserializar(contenido);

                var msgPack = new Paquete();

                try
                {
                    usuariosTableAdapter.Insert(valores[0], valores[1]);
                    usuariosTableAdapter.Update(dataSet11.Usuarios);
                    usuariosTableAdapter.Fill(dataSet11.Usuarios);
                    msgPack = new Paquete("resultado", "Registro realizado con éxito.");
                }
                catch (Exception)
                {
                    msgPack = new Paquete("resultado", "El usuario ya existe.");
                }
                conexionTcp.EnviarPaquete(msgPack);
            }
        }
예제 #2
0
        public void ProcesarRecibir(IAsyncResult resultadoAsync)
        {
            try
            {
                byte[]     data;
                Paquete    datoRecibido        = new Paquete(buferRx);
                Paquete    datoParaEnviar      = new Paquete();
                IPEndPoint puntoExtremoCliente = new IPEndPoint(IPAddress.Any, 0);
                EndPoint   extremoEP           = (EndPoint)puntoExtremoCliente;
                socketServidor.EndReceiveFrom(resultadoAsync, ref extremoEP);
                datoParaEnviar.IdentificadorChat = datoRecibido.IdentificadorChat;
                datoParaEnviar.NombreChat        = datoRecibido.NombreChat;
                switch (datoRecibido.IdentificadorChat)
                {
                case Paquete.IdentificadorDato.Mensaje:
                    datoParaEnviar.MensajeChat = string.Format("{0}: {1}", datoRecibido.NombreChat, datoRecibido.MensajeChat);
                    break;

                case Paquete.IdentificadorDato.Conectado:
                    Cliente nuevoCliente = new Cliente();
                    nuevoCliente.puntoExtremo = extremoEP;
                    nuevoCliente.nombre       = datoRecibido.NombreChat;
                    listaClientes.Add(nuevoCliente);
                    datoParaEnviar.MensajeChat = string.Format("-- {0} está conectado --", datoRecibido.NombreChat);
                    break;

                case Paquete.IdentificadorDato.Desconectado:
                    foreach (Cliente c in listaClientes)
                    {
                        if (c.puntoExtremo.Equals(extremoEP))
                        {
                            listaClientes.Remove(c);
                            break;
                        }
                    }
                    datoParaEnviar.MensajeChat = string.Format("-- {0} se ha desconectado -- ", datoRecibido.NombreChat);
                    break;
                }
                data = datoParaEnviar.ObtenerArregloBytes();
                foreach (Cliente clienteEnLista in listaClientes)
                {
                    if (clienteEnLista.puntoExtremo != extremoEP || datoParaEnviar.IdentificadorChat != Paquete.IdentificadorDato.Conectado)
                    {
                        socketServidor.BeginSendTo(data, 0, data.Length, SocketFlags.None, clienteEnLista.puntoExtremo, new AsyncCallback(ProcesarEnviar), clienteEnLista.puntoExtremo);
                    }
                }
                socketServidor.BeginReceiveFrom(buferRx, 0, buferRx.Length, SocketFlags.None, ref extremoEP, new AsyncCallback(ProcesarRecibir), extremoEP);
                Invoke(delegadoActualizarEstado, new object[] { datoParaEnviar.MensajeChat });
            }
            catch (Exception ex) { MessageBox.Show("Error en la recepción: " + ex.Message, "Servidor UDP", MessageBoxButtons.OK, MessageBoxIcon.Error); }
        }
예제 #3
0
 public void EnviarPaquete(Paquete paquete)
 {
     EscribirMsj(paquete);
 }
예제 #4
0
        public static string Conectar()

        {
            string stringPrueba;

            byte[] bytePrueba = new byte[1024];
            int    intPrueba;
            string dirCarpeta;

            Socket miPrimerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            // paso 2 - creamos el socket

            IPEndPoint miDireccion = new IPEndPoint(IPAddress.Any, 1500);

            //paso 3 -IPAddress.Any significa que va a escuchar al cliente en toda la red

            try

            {
                // paso 4
                miPrimerSocket.Bind(miDireccion); // Asociamos el socket a miDireccion
                miPrimerSocket.Listen(10);        // Lo ponemos a escucha

                while (true)
                {
                    Socket Escuchar = miPrimerSocket.Accept();// crear clase sockethijo y crear hilo con este socket

                    //creamos el nuevo socket, para comenzar a trabajar con él
                    //La aplicación queda en reposo hasta que el socket se conecte a el cliente
                    //Una vez conectado, la aplicación sigue su camino
                    while (true)
                    {
                        intPrueba = Escuchar.Receive(bytePrueba);

                        Array.Resize(ref bytePrueba, intPrueba);
                        stringPrueba = Encoding.Default.GetString(bytePrueba);

                        Paquete paquete = new Paquete(stringPrueba);
                        dirCarpeta = string.Concat(@"C:\", paquete.Contenido);

                        if (paquete.Comando == "CrearC")
                        {
                            if (Directory.Exists(dirCarpeta) != true)
                            {
                                Directory.CreateDirectory(dirCarpeta);
                            }
                        }
                        //Aca ponemos todo lo que queramos hacer con el socket, osea antes de
                        // cerrarlo je
                        Escuchar.Close(); //Luego lo cerramos
                        miPrimerSocket.Close();

                        return(stringPrueba);
                    }
                }
            }

            catch (Exception error)
            {
                return(error.ToString());
            }
        }
예제 #5
0
        //metodos
        private void ProcesarRecibir(IAsyncResult resultadoAsync)
        {
            try
            {
                byte[]     data;
                string     listado             = null;
                Paquete    datoRecibido        = new Paquete(buferRx);
                Paquete    datoParaEnviar      = new Paquete();
                IPEndPoint puntoExtremoCliente = new IPEndPoint(IPAddress.Any, 0);
                EndPoint   extremoEP           = (EndPoint)puntoExtremoCliente;
                socketServidor.EndReceiveFrom(resultadoAsync, ref extremoEP);
                saber = extremoEP.ToString();
                Console.WriteLine(saber);
                datoParaEnviar.IdentificadorChat = datoRecibido.IdentificadorChat;
                datoParaEnviar.NombreChat        = datoRecibido.NombreChat;
                switch (datoRecibido.IdentificadorChat)
                {
                case IdentificadorDato.Mensaje:
                    switch (datoRecibido.IdentificadorL)
                    {
                    case IdentificadorListado.Solicitar:
                        datoParaEnviar.MensajeChat = string.Format("{0}:{1}:{2}", datoRecibido.MensajeChat, extremoEP.ToString(), datoRecibido.NombreChat);
                        Cliente  client     = new Cliente();
                        String[] substrings = datoRecibido.MensajeChat.Split(',', ':');
                        client.nombre = substrings[0];
                        IPAddress  dir = IPAddress.Parse(substrings[1]);
                        IPEndPoint Cli = new IPEndPoint(dir, Convert.ToInt32(substrings[2]));
                        client.puntoExtremo = Cli;
                        data = datoParaEnviar.ObtenerArregloBytes();
                        foreach (Cliente clienteEnLista in listaClientes)
                        {
                            string nombre    = clienteEnLista.nombre;
                            string direccion = clienteEnLista.puntoExtremo.ToString();
                            if ((client.nombre == nombre) && (client.puntoExtremo.ToString() == direccion))
                            {
                                socketServidor.BeginSendTo(data, 0, data.Length, SocketFlags.None, clienteEnLista.puntoExtremo, new AsyncCallback(ProcesarEnviar), clienteEnLista.puntoExtremo);
                            }
                        }
                        break;

                    case IdentificadorListado.Aceptar:
                        String[] substrings1 = datoRecibido.MensajeChat.Split(',', ':');
                        Cliente  client1     = new Cliente();
                        Cliente  client2     = new Cliente();
                        client1.nombre = substrings1[0];
                        IPAddress  dir1 = IPAddress.Parse(substrings1[1]);
                        IPEndPoint Cli1 = new IPEndPoint(dir1, Convert.ToInt32(substrings1[2]));
                        client1.puntoExtremo = Cli1;
                        IPAddress  dir2 = IPAddress.Parse(substrings1[3]);
                        IPEndPoint Cli2 = new IPEndPoint(dir1, Convert.ToInt32(substrings1[4]));
                        client2.nombre       = substrings1[5];
                        client2.puntoExtremo = Cli2;
                        string mensaje1 = client1.nombre + "," + client1.puntoExtremo.ToString();
                        string mensaje2 = client2.nombre + "," + client2.puntoExtremo.ToString();
                        datoParaEnviar.IdentificadorChat = IdentificadorDato.Iniciar;
                        datoParaEnviar.IdentificadorL    = IdentificadorListado.Aceptar;
                        foreach (Cliente clienteEnLista in listaClientes)
                        {
                            string direccion = clienteEnLista.puntoExtremo.ToString();
                            datoParaEnviar.MensajeChat = mensaje2;
                            data = datoParaEnviar.ObtenerArregloBytes();
                            if ((client1.puntoExtremo.ToString() == direccion))
                            {
                                socketServidor.BeginSendTo(data, 0, data.Length, SocketFlags.None, clienteEnLista.puntoExtremo, new AsyncCallback(ProcesarEnviar), clienteEnLista.puntoExtremo);
                            }
                        }
                        foreach (Cliente clienteEnLista in listaClientes)
                        {
                            string direccion = clienteEnLista.puntoExtremo.ToString();
                            datoParaEnviar.MensajeChat = mensaje1;
                            data = datoParaEnviar.ObtenerArregloBytes();
                            if ((client2.puntoExtremo.ToString() == direccion))
                            {
                                socketServidor.BeginSendTo(data, 0, data.Length, SocketFlags.None, clienteEnLista.puntoExtremo, new AsyncCallback(ProcesarEnviar), clienteEnLista.puntoExtremo);
                            }
                        }
                        jug1 = mensaje1;
                        jug2 = mensaje2;
                        listaClientesJugando.Add(client1);
                        listaClientesJugando.Add(client2);
                        Console.WriteLine(jug1);
                        Console.WriteLine(jug2);
                        foreach (Cliente c in listaClientes)
                        {
                            if (c.puntoExtremo.ToString() == client1.puntoExtremo.ToString())
                            {
                                listaClientes.Remove(c);
                                break;
                            }
                        }
                        foreach (Cliente c in listaClientes)
                        {
                            if (c.puntoExtremo.ToString() == client2.puntoExtremo.ToString())
                            {
                                listaClientes.Remove(c);
                                break;
                            }
                        }
                        foreach (Cliente clienteEnLista in listaClientes)
                        {
                            listado = listado + clienteEnLista.nombre + "," + clienteEnLista.puntoExtremo.ToString() + ",";
                        }
                        datoParaEnviar.IdentificadorChat = IdentificadorDato.Listado;
                        datoParaEnviar.IdentificadorL    = IdentificadorListado.Actualiza;
                        datoParaEnviar.MensajeChat       = listado;
                        data = datoParaEnviar.ObtenerArregloBytes();
                        foreach (Cliente clienteEnLista in listaClientes)
                        {
                            socketServidor.BeginSendTo(data, 0, data.Length, SocketFlags.None, clienteEnLista.puntoExtremo, new AsyncCallback(ProcesarEnviar), clienteEnLista.puntoExtremo);
                        }
                        break;

                    case IdentificadorListado.Negar:
                        String[]   substrings3 = datoRecibido.MensajeChat.Split(',', ':');
                        Cliente    client3     = new Cliente();
                        IPAddress  dir3        = IPAddress.Parse(substrings3[1]);
                        IPEndPoint Cli3        = new IPEndPoint(dir3, Convert.ToInt32(substrings3[2]));
                        client3.nombre       = substrings3[5];
                        client3.puntoExtremo = Cli3;
                        string mensaje3 = datoRecibido.MensajeChat;
                        datoParaEnviar.IdentificadorChat = IdentificadorDato.Iniciar;
                        datoParaEnviar.IdentificadorL    = IdentificadorListado.Negar;
                        foreach (Cliente clienteEnLista in listaClientes)
                        {
                            string direccion = clienteEnLista.puntoExtremo.ToString();
                            datoParaEnviar.MensajeChat = mensaje3;
                            data = datoParaEnviar.ObtenerArregloBytes();
                            if ((client3.puntoExtremo.ToString() == direccion))
                            {
                                socketServidor.BeginSendTo(data, 0, data.Length, SocketFlags.None, clienteEnLista.puntoExtremo, new AsyncCallback(ProcesarEnviar), clienteEnLista.puntoExtremo);
                            }
                        }
                        break;
                    }

                    break;

                case IdentificadorDato.Listado:
                    switch (datoRecibido.IdentificadorL)
                    {
                    case IdentificadorListado.Tuinfo:

                        break;

                    case IdentificadorListado.Conectado:
                        Cliente nuevoCliente = new Cliente(); nuevoCliente.puntoExtremo = extremoEP; nuevoCliente.nombre = datoRecibido.NombreChat;
                        listaClientes.Add(nuevoCliente);
                        datoParaEnviar.MensajeChat = string.Format("-- {0} está conectado --", datoRecibido.NombreChat);
                        foreach (Cliente clienteEnLista in listaClientes)
                        {
                            listado = listado + clienteEnLista.nombre + "," + clienteEnLista.puntoExtremo.ToString() + ",";
                        }
                        datoParaEnviar.MensajeChat = listado;
                        data = datoParaEnviar.ObtenerArregloBytes();
                        foreach (Cliente clienteEnLista in listaClientes)
                        {
                            socketServidor.BeginSendTo(data, 0, data.Length, SocketFlags.None, clienteEnLista.puntoExtremo, new AsyncCallback(ProcesarEnviar), clienteEnLista.puntoExtremo);
                        }
                        break;

                    case IdentificadorListado.Desconectado:

                        foreach (Cliente c in listaClientes)
                        {
                            if (c.puntoExtremo.Equals(extremoEP))
                            {
                                listaClientes.Remove(c); break;
                            }
                        }
                        datoParaEnviar.MensajeChat = string.Format("-- {0} se ha desconectado -- ", datoRecibido.NombreChat);
                        foreach (Cliente clienteEnLista in listaClientes)
                        {
                            listado = listado + clienteEnLista.nombre + "," + clienteEnLista.puntoExtremo.ToString() + ",";
                        }
                        datoParaEnviar.MensajeChat = listado;
                        data = datoParaEnviar.ObtenerArregloBytes();
                        foreach (Cliente clienteEnLista in listaClientes)
                        {
                            socketServidor.BeginSendTo(data, 0, data.Length, SocketFlags.None, clienteEnLista.puntoExtremo, new AsyncCallback(ProcesarEnviar), clienteEnLista.puntoExtremo);
                        }
                        break;
                    }

                    break;

                case IdentificadorDato.Jugada:
                    Console.WriteLine(datoRecibido.MensajeChat);
                    String[] substrings10 = datoRecibido.MensajeChat.Split(',', ':');
                    Cliente  jugador      = new Cliente();
                    jugador.nombre = substrings10[1];
                    IPAddress  dire = IPAddress.Parse(substrings10[2]);
                    IPEndPoint extr = new IPEndPoint(dire, Convert.ToInt32(substrings10[3]));
                    jugador.puntoExtremo = extr;
                    string enviara = jugador.puntoExtremo.ToString();
                    datoParaEnviar.IdentificadorChat = IdentificadorDato.Jugada;
                    datoParaEnviar.MensajeChat       = datoRecibido.MensajeChat;
                    data = datoParaEnviar.ObtenerArregloBytes();

                    foreach (Cliente clienteEnLista in listaClientesJugando)
                    {
                        if (clienteEnLista.puntoExtremo.ToString() == enviara)
                        {
                            socketServidor.BeginSendTo(data, 0, data.Length, SocketFlags.None, clienteEnLista.puntoExtremo, new AsyncCallback(ProcesarEnviar), clienteEnLista.puntoExtremo);
                        }
                    }

                    break;

                case IdentificadorDato.Resultado:
                    Console.WriteLine("Resultaddo");
                    Console.WriteLine(datoRecibido.MensajeChat);
                    String[] substrings11 = datoRecibido.MensajeChat.Split(',', ':');
                    Cliente  jugador2     = new Cliente();
                    jugador2.nombre = substrings11[1];
                    IPAddress  dire2 = IPAddress.Parse(substrings11[2]);
                    IPEndPoint extr2 = new IPEndPoint(dire2, Convert.ToInt32(substrings11[3]));
                    jugador2.puntoExtremo = extr2;
                    string enviara2 = jugador2.puntoExtremo.ToString();
                    datoParaEnviar.IdentificadorChat = IdentificadorDato.Resultado;
                    datoParaEnviar.MensajeChat       = datoRecibido.MensajeChat;
                    data = datoParaEnviar.ObtenerArregloBytes();

                    foreach (Cliente clienteEnLista in listaClientesJugando)
                    {
                        if (clienteEnLista.puntoExtremo.ToString() == enviara2)
                        {
                            socketServidor.BeginSendTo(data, 0, data.Length, SocketFlags.None, clienteEnLista.puntoExtremo, new AsyncCallback(ProcesarEnviar), clienteEnLista.puntoExtremo);
                        }
                    }
                    break;
                }

                socketServidor.BeginReceiveFrom(buferRx, 0, buferRx.Length, SocketFlags.None, ref extremoEP, new AsyncCallback(ProcesarRecibir), extremoEP);
                Invoke(delegadoActualizarEstado, new object[] { datoParaEnviar.MensajeChat });
            }
            catch (Exception ex) { MessageBox.Show("Error en la recepción: " + ex.Message, "Servidor UDP", MessageBoxButtons.OK, MessageBoxIcon.Error); }
        }
예제 #6
0
        }// FormServidor_Load

        private void MensajeRecibido(ConexionTcp conexionTcp, string datos)
        {
            var    paquete = new Paquete(datos);
            string comando = paquete.comando;

            if (comando == "insertarCajero")
            {
                string        contenido = paquete.contenido;
                List <string> valores   = Mapa.Deserializar(contenido);
                Cajero        cajero    = new Cajero();
                cajero.usuario      = valores[0];
                cajero.nombre       = valores[1];
                cajero.primerAp     = valores[2];
                cajero.segundoAp    = valores[3];
                cajero.cajaAsignada = 0;
                cajero.activo       = false;

                conexiondb.InsertarCajero(cajero);

                var msgPack = new Paquete("resultadoCajero", "Registro completado.");
                conexionTcp.EnviarPaquete(msgPack);

                if (txtBitacora.InvokeRequired)
                {
                    txtBitacora.Invoke(new MethodInvoker(delegate { txtBitacora.Text = txtBitacora.Text + "Nuevo cajero registrado: " + DateTime.Now.ToString() + "\r\n"; }));
                }
            }
            if (comando == "insertarVenta")
            {
                string        contenido = paquete.contenido;
                List <string> valores   = Mapa.Deserializar(contenido);
                string        usuario   = valores[0];
                DateTime      fecha     = Convert.ToDateTime(valores[1]);
                int           codProd   = Convert.ToInt32(valores[2]);
                int           cantidad  = Convert.ToInt32(valores[3]);
                decimal       precio;
                decimal       montoTotal;
                if (conexiondb.validarUsuario(usuario) != 0)
                {
                    if (conexiondb.esActivo(usuario))
                    {
                        if (conexiondb.validarCodProducto(codProd) != 0)
                        {
                            if (conexiondb.obtenerCantidad(codProd) >= cantidad)
                            {
                                precio     = conexiondb.obtenerPrecio(codProd);
                                montoTotal = precio * cantidad;
                                Venta venta = new Venta();
                                venta.cajeroUsuario  = usuario;
                                venta.fecha          = fecha;
                                venta.codigoProducto = codProd;
                                venta.precioProducto = precio;
                                venta.cantidad       = cantidad;
                                venta.montoTotal     = montoTotal;
                                conexiondb.insertarVenta(venta);
                                var msgPack = new Paquete("resultadoVenta", "Registro completado.");
                                conexionTcp.EnviarPaquete(msgPack);

                                int nuevaCant = conexiondb.obtenerCantidad(codProd) - cantidad;
                                conexiondb.actualizarCantidad(codProd, nuevaCant);

                                if (txtBitacora.InvokeRequired)
                                {
                                    txtBitacora.Invoke(new MethodInvoker(delegate { txtBitacora.Text = txtBitacora.Text + "Nueva venta registrada: " + DateTime.Now.ToString() + "\r\n"; }));
                                }
                            }
                            else
                            {
                                var msgPackProdInsuficiente = new Paquete("resultadoVenta", "No hay suficiente inventario del producto para realizar la venta.");
                                conexionTcp.EnviarPaquete(msgPackProdInsuficiente);
                            }
                        }
                        else
                        {
                            var msgPackProdNoEncontrado = new Paquete("resultadoVenta", "Producto no encontrado.");
                            conexionTcp.EnviarPaquete(msgPackProdNoEncontrado);
                        }
                    }
                    else
                    {
                        var msgPackUsuarioNoAutorizd = new Paquete("resultadoVenta", "Usuario no Autorizado.");
                        conexionTcp.EnviarPaquete(msgPackUsuarioNoAutorizd);
                    }
                }
                else
                {
                    var msgPackUsuarioNoEncontrado = new Paquete("resultadoVenta", "Usuario no encontrado.");
                    conexionTcp.EnviarPaquete(msgPackUsuarioNoEncontrado);
                }
            }
            if (comando == "usuarioConectado")
            {
                string contenido = paquete.contenido;

                if (txtBitacora.InvokeRequired)
                {
                    txtBitacora.Invoke(new MethodInvoker(delegate { txtBitacora.Text = txtBitacora.Text + contenido + ": " + DateTime.Now.ToString() + "\r\n"; }));
                }
            }
            if (comando == "usuarioDesconectado")
            {
                string contenido = paquete.contenido;

                if (txtBitacora.InvokeRequired)
                {
                    txtBitacora.Invoke(new MethodInvoker(delegate { txtBitacora.Text = txtBitacora.Text + contenido + ": " + DateTime.Now.ToString() + "\r\n"; }));
                }
            }
            if (comando == "inicioSesion")
            {
                string contenido        = paquete.contenido;
                bool   cajeroAutorizado = conexiondb.esActivo(contenido);

                if (conexiondb.validarUsuario(contenido) != 0)
                {
                    if (cajeroAutorizado)
                    {
                        var msgPackAutorizado = new Paquete("resultadoIncSes", "Sesión Iniciada");
                        conexionTcp.EnviarPaquete(msgPackAutorizado);
                    }
                    else
                    {
                        var msgPack = new Paquete("resultadoIncSes", "Usuario no autorizado. Debe esperar a que se le autorize para registrar ventas.");
                        conexionTcp.EnviarPaquete(msgPack);
                    }
                }
                else
                {
                    var msgPack = new Paquete("resultadoIncSes", "Usuario no encontrado.");
                    conexionTcp.EnviarPaquete(msgPack);
                }
            }
        }// MensajeRecibido