int main(int argc, char *argv[]) { int res1, res2, res3, cat; // Variables para el control de la selección de usuario char pass[15]; // Almacén para la contraseña printf("Conexión a la administración. Introduce la contraseña: "); scanf("%s",pass); while (strcmp(pass,PW)!=0){ printf("Contraseña incorrecta.\n"); printf("Introduce la contraseña: "); scanf("%s",pass); } /* Comprobar que los parámetros son correctos */ if (argc!=3){ printf("ERROR: no ha utilizado la sintaxis correcta\nUso: %s <direccion_ip> <puerto>\n", argv[0]); exit(-1); } //Crear el socket int sock=Socket_prepararCliente(argv[1],argv[2]); // Menú que lista todas las opciones de administrador de forma jerárquica do{ printf("\n 1. Gestión de preguntas y categorías\n"); printf(" 2. Opciones de moderación\n"); printf(" 3. Apagar el servidor\n"); printf(" 0. Salir\n"), printf("Indica el número correspondiente a la opción deseada: "); scanf("%d",&res1); switch (res1){ case 1: do{ printf("\n 1. Añadir una pregunta\n"); printf(" 2. Listar categorías disponibles\n"); printf(" 3. Listar preguntas de una categoría\n"); printf(" 4. Eliminar una pregunta\n"); printf(" 0. Salir de la gestión de preguntas y categorías\n"); scanf("%d",&res2); switch (res2){ case 1: // Llamar a función para añadir pregunta Question pregunta; Connector fichero_preguntas; Questions *preguntas; printf("Introduceme la pregunta a insertar\n"); fgets(pregunta.question,255,stdin); printf("Introduceme la categoria de la pregunta\n"); fgets(auxiliar,100,stdin); sscanf(auxiliar,"%d",&pregunta.category); printf("Introduceme la respuesta correcta\n"); fgets(pregunta.valid,64,stdin); printf("Introduceme una respuesta incorrecta\n"); fgets(pregunta.invalid1,64,stdin); printf("Introduceme una respuesta incorrecta\n"); fgets(pregunta.invalid2,64,stdin); printf("Introduceme una respuesta incorrecta\n"); fgets(pregunta.invalid3,64,stdin); sprintf(fichero_preguntas.questionsFilename,"data/questions.db"); preguntas = Questions_init(); Questions_load(&fichero_preguntas, preguntas); Questions_add(&fichero_preguntas,&preguntas, &pregunta); break; case 2: // Llamar a función para listar categorías printf("Listando categorías disponibles...\n"); pedirCategorias(sock); break; case 3: // Llamar a función para listar preguntas de cada categoría printf("\nIntroduce el número de la categoría a listar:\n\n"); printf(" 1. Entretenimiento\n"); printf(" 2. Geografía\n"); printf(" 3. Historia\n"); printf(" 4. Literatura\n"); printf(" 5. Ciencia\n"); printf(" 6. Deportes\n"); printf("\n Categoría: "); scanf("%d", &cat); lista_preguntas(cat, sock); break; case 4: // Llamar a función para eliminar pregunta printf("Eliminando pregunta...\n"); break; default: printf("Introduce un número de acuerdo a las opciones listadas\n"); } }while (res2!=0); break; case 2: do{ printf("\n 1. Listar preguntas sin moderar\n"); printf(" 2. Aceptar pregunta en moderación\n"); printf(" 3. Denegar pregunta en moderación\n"); printf(" 0. Salir de la moderación\n"); scanf("%d",&res3); switch (res3){ case 1: // Llamar a función para listar preguntas sin moderar printf("Listando preguntas sin moderar...\n"); break; case 2: printf("Selecciona el ID de pregunta a aceptar\n"); // Llamar a función que acepte pregunta break; case 3: printf("Selecciona el ID de pregunta a denegar\n"); // Llamar a función que deniegue pregunta break; default: printf("Introduce un número de acuerdo a las opciones listadas\n"); } }while (res3!=0); break; case 3: // Llamar a función que apague el servidor printf("Apagando el servidor...\n"); break; default: if (res1!=0) { printf("Introduce un número de acuerdo a las opciones listadas.\n"); } } }while (res1!=0); return 0; }
int main(int argc, char *argv[]) { char *datos; int numerousuarios; char registro; char nombre[20]; int i = 0; sockets = (int*) malloc (MAX_USUARIOS*sizeof(int)); for (i=0;i<MAX_USUARIOS;i++) sockets[i]=-1; usuarios = (char**) malloc (MAX_USUARIOS*sizeof(char*)); for (i=0;i<MAX_USUARIOS;i++) usuarios[i]=0; // VARIABLE GLOBAL¿??¿?¿?¿?¿?¿???????¿?¿??¿?¿?¿?¿?¿?¿?¿?¿?¿? // Indicamos al conector el fichero con las preguntas strcpy(connector.questionsFilename, "data/questions.db"); // Cargamos todas las preguntas en memoria questions = Questions_init(); Questions_load(&connector, questions); // Liberamos memoria Questions_free(questions); // TODO!!! Crear el socket, la siguiente línea tiene que ser sustituida int sock = 0; datos=Socket_leer(sock); if(datos[0]=='1'){ } else if (datos[0] == '2'){ // REGISTRO DE USUARIO datos=Socket_leer(sock); //Recibe en datos el "usuario clave" int o=0; while(sockets[o] != -1) { // Buscamos espacio para guardar el usuario o++; } numerousuarios=o; //El usuario actual y su socket estan en la posicion numerousuarios sockets[numerousuarios]=sock; // Guardamos el socket del usuario en el array de sockets int p=0; while(datos[p] != ' ') { nombre[p]=datos[p]; p++; } nombre[p]=0; //Guardamos en nombre el nombre del usuario strcpy(usuarios[numerousuarios],nombre); // Guardamos el nombre del usuario en el array de usuarios registro=Registro_altausuario(sock, datos); // Llamo a registro alta usuario con el socket y "usuario clave" if (registro == '1') { Socket_escribir(sock,"O"); // Comprobamos si ha ido todo } else { Socket_escribir(sock,"E"); // correctamente en el alta. } } return 0; }