elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 [2]
11  Programación / Java / Ayuda con JOptionPane mostrar datos en una única ventana. en: 9 Diciembre 2020, 19:27 pm
Buenas tardes a todos,

Estoy desarrollando una aplicación que solicita y muestra los datos por pantalla a través de JOptionPane con ventanas y no por consola como he hecho siempre.

He conseguido poner todo más o menos correctamente, pero a la hora de listar la información introducida por el usuario, el programa me crea una ventana para cada información introducida y me gustaría que sacara toda la información a la vez.

Ejemplo: Si he dado de alta 2 clientes con todos sus datos, que abra una única ventana con los datos de ambos clientes y no una ventana por cliente.

¿Hay alguna forma de que el programa pueda realizar esta función? Os pongo en código como lo tengo actualmente.

Código
  1.    /**Método para dar de alta a nuevos clientes en la base de datos del hotel. */
  2.      public void altaCliente(){
  3.  
  4.        String dni = JOptionPane.showInputDialog("NUEVO CLIENTE: \n" +"Escriba el DNI del cliente: \n\n");
  5.  
  6.    /**Llamada al método comprobarDni para comprobar que el cliente que se está dando de alta no ha sido ya creado. */    
  7.        Cliente cliente = comprobarDni(dni);
  8.    /** Si el dni introducido no coincide con el de ningún cliente existente devuelve null y continua con el proceso de alta del cliente nuevo.
  9.     En caso que el dni introducido ya exista significa que el cliente ya ha sido registrado previamente y nos devolverá un mensaje de error. */
  10.        if(cliente == null) {
  11.          String nombre;  
  12.          String apellidos;
  13.          String telefono;
  14.  
  15.          nombre = JOptionPane.showInputDialog("Introduzca el nombre del cliente: ");
  16.          apellidos = JOptionPane.showInputDialog("Introduzca los apellidos del cliente: ");
  17.          telefono = JOptionPane.showInputDialog("Introduzca el núm. de teléfono del cliente: ");
  18.  
  19.        clientes.add(new Cliente(nombre,apellidos,dni,telefono));
  20.  
  21.        JOptionPane.showConfirmDialog(null,"Se ha añadido el siguiente cliente en la base de datos: \n"
  22.        + "\nNombre: " +nombre
  23.        +"\nApellidos: " +apellidos
  24.        +"\nDni: " +dni
  25.        + "\nTeléfono: "+telefono);
  26.  
  27.      }    
  28.        else {
  29.            JOptionPane.showMessageDialog(null, "El DNI introducido ya existe. El cliente que está dando de alta ya se encuentra registrado en el sistema.","ERROR", 0);
  30.      }
  31.  
  32.      }
  33.  
  34.    /** Método para comprobar que si dni introducido por teclado coincide con el de agún cliente ya registrado. */
  35.    public Cliente comprobarDni(String dni){
  36.  
  37.        for (int i=0; i < clientes.size(); i++){
  38.            Cliente cliente = clientes.get(i);
  39.  
  40.            if (dni.equals(cliente.getDni())){
  41.                return cliente;
  42.            }
  43.        }
  44.        return null;  
  45.    }
  46.  
  47.    /** Método para listar los clientes registrados. */
  48.    public void mostrarClientes() {
  49.        JOptionPane.showMessageDialog(null,"LISTA DE CLIENTES: ");
  50.        for (int i=0; i < getClientes().size(); i++) {
  51.            Cliente aux = getClientes().get(i);
  52.  
  53.        JOptionPane.showMessageDialog(null,aux.getNombre() + " " + aux.getApellidos() + ", Dni." + aux.getDni() + ", Telf." + aux.getTelefono());
  54.        }
  55.  
  56. }

Me gustaría que en la Función mostrarClientes() pudiera crear una única ventana que fuera LISTA CLIENTES y en ella aparecieran todos los clientes que se han introducido y no que primero aparezca la ventana de LISTA CLIENTES, Cliente 1 y sus datos, cliente 2 y sus datos por ejemplo.

Mil gracias por la ayuda, saludos.
12  Programación / Programación C/C++ / Re: Hacer Ping en codigo C y que cree un txt con los resultados de cada IP en: 18 Noviembre 2020, 17:44 pm
Muchísimas gracias por la ayuda!

He estado probando el código y cumple con la funcionalidad! :)
Estudiaré ahora como puedo hacer para que informe cuando el ping es correcto y cuando la respuesta no es válida y lo muestre con un mensaje de este tipo en lugar de hacer el ping completo en pantalla (seguiré buscando más info), ya que como dices mi nivel en C ahora mismo para lo que se me pide se queda pequeño y hay muchas cosas que escapan a mis conocimientos...


PING INCORRECTO
No contesta 21.0.21.2
ping 21.0.21.2 > ping.txt

PING CORRECTO
Contesta 21.0.21.2
ping 27.3.22.18 > ping.txt


Nuevamente mil gracias por la ayuda, me ha sido de gran utilidad y sobre todo he podido aprender con lo que me habéis dicho y como realizar cierto tipo de funciones. Cruzo dedos para poder seguir con el desarrollo y poder obtener este tipo de avisos en la lectura por pantalla.

Saludos.
13  Programación / Programación C/C++ / Re: Hacer Ping en codigo C y que cree un txt con los resultados de cada IP en: 18 Noviembre 2020, 13:15 pm
Muchas gracias Alberto por los recursos compartidos, me han parecido bastante interesantes.

El problema es que el programa que se me plantea realizar tiene que hacerse si o si desde C y tiene que leer las IP desde el archivo .txt y mostrar en pantalla si funcionan correctamente o no lanzando un ping con cada una de las líneas que hay en el archivo de texto.

Me estoy volviendo loca para poder dar con un código funcional que pueda hacer esto, porque por más que busco info y leo los recursos que tengo no he visto nada similar, ni como poder realizar algo parecido..

Lo único que encontré para poder realizar el ping, fue este ejemplo:

Código
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. int main () {
  7.   char command[50];
  8.  
  9.   strcpy( command, "ls -l" );
  10.   system(command);
  11.  
  12.   return(0);
  13. }

Sacado de esta página https://www.tutorialspoint.com/c_standard_library/c_function_system

Y partiendo de este ejemplo, modificar el "ls -l" por el "ping", pero solo he conseguido que haga el ping si pongo una dirección concreta, no soy capaz de que utilice las lineas del archivo .txt y me diga si las IP funcionan correctamente o no :(

Mil gracias a todos por vuestra ayuda, me está sirviendo de mucho para ir problando otras posibilidades y ver que puedo hacer porque veo que estoy estancada ahora mismo...
14  Programación / Programación C/C++ / Re: Hacer Ping en codigo C y que cree un txt con los resultados de cada IP en: 18 Noviembre 2020, 11:39 am
Buenos días,

Lo primero de todo, darte las gracias por tu ayuda, por más que busco y pruebo no soy capaz de dar con lo que se me pide..
He probado a añadir en el código lo que me indicas y me da error en la línea 9, está claro que es porque estoy haciendo algo mal, pero no consigo ver que es lo que está sin inicializar como me indica el programa.

Me avisa con estos fallos;
[Warning] excess elements in array initializer
[Warning] (near initialization for 'ip')

Sobre la línea
Código
  1. char ip[MAX_IP_LEN] = {0};

No descarto haber colocado mal las líneas en el código.. :(

Código
  1. //Función que muestra por pantalla el contenido del archivo cuya ruta ha introducido el usuario cuando se le ha requerido.
  2. void leerArchivo(){
  3.  
  4. //Declaración de puntero tipo FILE
  5. FILE *f;
  6. //Declaración de variables locales
  7. char archivo[80]; //La variable archivo es la ruta asignada a la variable f de tipo fichero.
  8. const int MAX_IP_LEN = 40;
  9.    char ip[MAX_IP_LEN] = {0};
  10.  
  11.  
  12. printf("\n Introduce la ruta del archivo a leer: \n");
  13. println();
  14. scanf("%s", &archivo); //Lectura de la cadena introducida por el usuario mediante scanf, los datos introducidos pasan a corresponder a la variable archivo.
  15. println();
  16. //Asignamos al puntero f la apertura del archivo cuya ruta está almacenada en la variable "archivo", utilizamos el modo de apertura de lectura ("r").
  17. f = fopen(archivo, "rt");
  18.  
  19. if (f == NULL) {
  20. printf("Problemas de apertura del archivo\n"); //Si la variable f de tipo fichero tiene valor NULL, es decir, no ha logrado abrir el archivo, se imprime por pantalla un mensaje de error.
  21. }
  22. //En los otros casos, es decir, si se ha conseguido la apertura correcta del archivo de la ruta introducida...
  23. else {
  24. while (!feof(f)) { //Mientras no se ha llegado al final del fichero "f"...
  25. printf("%c", getc(f)); //Imprime por pantalla el carácter que está leyendo el fichero en ese mismo instante, de esta forma, imprime todos los carácteres, mostrando por pantalla todos los carácteres que contiene el archivo de texto.
  26. }
  27.        while (fgets(ip, MAX_IP_LEN, f)) {
  28.        arrancarPing(ip);
  29.    }
  30. fclose(f); //Cerramos el archivo para liberar recursos.
  31. }
  32.  
  33. }
  34.  
  35. void arrancarPing(const char* ip){
  36.    char command[255] = {0};
  37.  
  38.    sprintf(command, "ping %s > ping2.txt", ip);
  39.    system(command);
  40. }
  41.  

Mil gracias por la ayuda, saludos.
15  Programación / Programación C/C++ / Re: Hacer Ping en codigo C y que cree un txt con los resultados de cada IP en: 17 Noviembre 2020, 19:09 pm
El problema, es que una vez he llegado aquí no he conseguido avanzar más.. consigo ver la información de las IP que tengo en el fichero .txt y he conseguido que el programa me cree un nuevo .txt con la respuesta que da el ping poniendo una dirección.. pero no sé como declarar la función para poder hacerla como indicas en el paso 2 que sería lo más lógico y funcional creo.

Lo máximo ha sido crear estas dos funciones.

Código
  1. void leerArchivo(){
  2.  
  3. //Declaración de puntero tipo FILE
  4. FILE *f;
  5. //Declaración de variables locales
  6. char archivo[80]; //La variable archivo es la ruta asignada a la variable f de tipo fichero.
  7.  
  8. printf("\n Introduce la ruta del archivo a leer: \n");
  9. println();
  10. scanf("%s", &archivo); //Lectura de la cadena introducida por el usuario mediante scanf, los datos introducidos pasan a corresponder a la variable archivo.
  11. println();
  12. //Asignamos al puntero f la apertura del archivo cuya ruta está almacenada en la variable "archivo", utilizamos el modo de apertura de lectura ("r").
  13. f = fopen(archivo, "r");
  14.  
  15. if (f == NULL) {
  16. printf("Problemas de apertura del archivo\n"); //Si la variable f de tipo fichero tiene valor NULL, es decir, no ha logrado abrir el archivo, se imprime por pantalla un mensaje de error.
  17. }
  18. //En los otros casos, es decir, si se ha conseguido la apertura correcta del archivo de la ruta introducida...
  19. else {
  20. while (!feof(f)) { //Mientras no se ha llegado al final del fichero "f"...
  21. printf("%c", getc(f)); //Imprime por pantalla el carácter que está leyendo el fichero en ese mismo instante, de esta forma, imprime todos los carácteres, mostrando por pantalla todos los carácteres que contiene el archivo de texto.
  22. }
  23.  
  24. fclose(f); //Cerramos el archivo para liberar recursos.
  25. }
  26.  
  27. }
  28.  
  29. void arrancarPing(){
  30.  
  31.    char command[50];
  32.  
  33.   strcpy(command, "ping www.google.com""> ping2.txt" );
  34.   system(command);
  35.  
  36. return 0;
  37. }
  38.  
Mil gracias, saludos.


MOD: El código debe ir entre etiquetas de Código GeSHi
16  Programación / Programación C/C++ / Re: Hacer Ping en codigo C y que cree un txt con los resultados de cada IP en: 17 Noviembre 2020, 18:11 pm
Hola!

El código que tengo hasta ahora mismo es este;


Código
  1. //Función que muestra por pantalla el contenido del archivo cuya ruta ha introducido el usuario cuando se le ha requerido.
  2.  
  3. #include <string.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. //Macro definida para insertar saltos de línea durante el codigo para mejorar el aspecto visual de la impresión de los printf por pantalla.
  8. #define println() printf("\n")
  9.  
  10. void leerArchivo();
  11. void ArrancarPing()
  12.  
  13. int main(void){
  14.  
  15.    int opcion;
  16.  
  17.    printf("Seleccione la opción que desea realizar: \n\n"
  18.        "a. Una función que lea el contenido de un archivo .txt con diferentes direcciones ip, en la que la ruta del archivo se solicitará al usuario por pantalla. La ruta y nombre del archivo tienen que ser preguntados al usuario y visualizados por pantalla. Por último, el programa debe lanzar un ping para cada una de las direcciones ip del archivo e informar cuales de ellas responden correctamente a este comando."
  19.        "b. Sin desarrollar.\n\n"
  20.        "c. Sin desarrollar.\n\n"
  21.        "d. Salir del programa. \n\n");
  22.    scanf("%c", &opcion);
  23.  
  24.    while (opcion != 'a' && opcion != 'A' && opcion != 'b' && opcion != 'B' && opcion != 'c' && opcion != 'C' && opcion != 'd' && opcion != 'D') {
  25.        printf("Opción incorrecta, eliga una de las opciones disponibles. (a,b,c o d).\n");
  26.        fflush(stdin);
  27.        scanf("%c", &opcion);
  28.    }
  29.  
  30.    switch (opcion) {
  31.    case 'a':
  32.    case 'A': leerArchivo();
  33.  
  34.        break;
  35.    case 'b':
  36.    case 'B': printf("Prueba de funcionamiento opcion B\n");
  37.        break;
  38.    case 'c':
  39.    case 'C': printf("Prueba de funcionamiento opcion C\n");
  40.        break;
  41.    case 'd':
  42.    case 'D':
  43.        break;
  44.    }
  45.  
  46.    return 0;
  47. }
  48.  
  49. void leerArchivo(){
  50.  
  51. //Declaración de puntero tipo FILE
  52. FILE *f;
  53. //Declaración de variables locales
  54. char archivo[80]; //La variable archivo es la ruta asignada a la variable f de tipo fichero.
  55.  
  56. printf("\n Introduce la ruta del archivo a leer: \n");
  57. println();
  58. scanf("%s", &archivo); //Lectura de la cadena introducida por el usuario mediante scanf, los datos introducidos pasan a corresponder a la variable archivo.
  59. println();
  60. //Asignamos al puntero f la apertura del archivo cuya ruta está almacenada en la variable "archivo", utilizamos el modo de apertura de lectura ("r").
  61. f = fopen(archivo, "r");
  62.  
  63. if (f == NULL) {
  64. printf("Problemas de apertura del archivo\n"); //Si la variable f de tipo fichero tiene valor NULL, es decir, no ha logrado abrir el archivo, se imprime por pantalla un mensaje de error.
  65. }
  66. //En los otros casos, es decir, si se ha conseguido la apertura correcta del archivo de la ruta introducida...
  67. else {
  68. while (!feof(f)) { //Mientras no se ha llegado al final del fichero "f"...
  69. printf("%c", getc(f)); //Imprime por pantalla el carácter que está leyendo el fichero en ese mismo instante, de esta forma, imprime todos los carácteres, mostrando por pantalla todos los carácteres que contiene el archivo de texto.
  70. }
  71. fclose(f); //Cerramos el archivo para liberar recursos.
  72. }
  73.  
  74. }
  75.  
  76. void ArrancarPing(){
  77.  
  78. char command[50];
  79.  
  80.   strcpy( command, "ping www.google.com" );
  81.   system(command);
  82.  
  83. }

He conseguido abrir el archivo .txt y que me muestre las IP que tengo en el archivo, pero no soy capaz de ejecutar el ping cogiendo la información del archivo que he abierto y leido por pantalla.., solo he conseguido ejecutar el ping desde el código escribiendo una IP concreta en el mismo

Mil gracias por la ayuda, saludos.



MOD: El código debe ir entre etiquetas de Código GeSHi
17  Programación / Programación C/C++ / Hacer Ping en codigo C y que cree un txt con los resultados de cada IP en: 17 Noviembre 2020, 17:05 pm
Buenas tardes a todos,

Estoy realizando un trabajo y necesito crear un programa que aparte de abrir, leer, modificar y crear archivos .txt haga un ping y esta información la almacene en un nuevo txt.

He conseguido crear el archivo .txt desde cmd haciendo ping directamente, pero no soy capaz de codificar el código en el programa de C para que el programa directamente ejecute el ping y guarde la información en un nuevo .txt ¿Podéis ayudarme?

Tengo que crear las siguientes funciones y no sé por donde empezar :(

1. Una función que lea el contenido de un archivo .txt con diferentes direcciones ip, en la que la ruta del archivo se solicitará al usuario por pantalla. La ruta y nombre del archivo tienen que ser preguntados al usuario y visualizados por pantalla. Por último, el programa debe lanzar un ping para cada una de las direcciones ip del archivo e informar cuales de ellas responden correctamente a este comando.

Mil gracias por la ayuda, saludos.
Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines