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); } }
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); } }
public void EnviarPaquete(Paquete paquete) { EscribirMsj(paquete); }
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()); } }
//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); } }
}// 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