void main() { struct nodo *cabeza,*cabeza1; struct nodo *insertar1 (struct nodo *p, int n); void insertar2 (struct nodo **p, int n); void escribir_lista (struct nodo *p); void concatenar (struct nodo **p,struct nodo *q); int numero; printf ("utilizando la funcion insertar2 ()\n"); cabeza = NULL; printf ("de numero a insertar en la lista\n"); scanf ("%d",&numero); while (numero != 9999) { insertar2 (&cabeza,numero); printf ("de numero a insertar en la lista\n"); scanf ("%d",&numero); } printf ("\n utilizando la funcion insertar1 ()\n"); cabeza1 = NULL; printf ("de numero a insertar en la lista\n"); scanf ("%d",&numero); while (numero != 9999) { cabeza1 = insertar1 (cabeza1,numero); printf ("de numero a insertar en la lista\n"); scanf ("%d",&numero); } concatenar (&cabeza,cabeza1); escribir_lista (cabeza); }
void main() { struct nodo *p,*cab; void escribir_lista (struct nodo *q); void crear_lista1 (struct nodo **p, int i); void insertar_antes (struct nodo *p, int n); crear_lista1 (&cab,10); p = cab; while (p->sig != NULL ) p = p->sig; insertar_antes (cab->sig,8888); escribir_lista (cab); }
void main() /* crea una lista */ { struct nodo *cab,*q; int i = 10; void escribir_lista (struct nodo *q); cab = NULL; while (i > 0) { q = localizar; q->info = i; q->sig = cab; cab = q; i = i - 1; } escribir_lista (cab); }
void *usuarios(void *conector) { printf("dentro de Usuarios \n"); int code; int nchar; static char buf[MAX]; //char mensaje2[MAX]; int resultado; char usuario [80]; char mensaje_a_cliente[50]; //char *mensaje_respuesta; /*Haciendo la conversion del SocketID pasado por argumento*/ int con = (int) conector; /* Se pasa el valor de con por puntero, no se guarda en variable local y se llama directamente * hay que resvisar*/ printf("El valor del socket es %d \n",con); /*Exactamente el mismo problemas anterior*/ nchar=read(con,buf,MAX);//nchar indica el numero de caractareres recibidos buf[nchar]='\0'; printf("Se ha recibido el mensaje %s \n",buf); sscanf (buf,"%d %s ",&code,usuario); printf("el codigo es: %d y el usuario es %s \n",code,usuario); code=identify(buf); // printf("el codigo es: %d y el usuario es %s \n",code,usuario); printf("Empezamos con el primer usuario que utilizaria un Thread\n"); while( code!=100) { switch(code) { case 1: if (T == 4) { sprintf (mensaje_a_cliente,"99 "); write(con,mensaje_a_cliente,strlen(mensaje_a_cliente)); sprintf (mensaje_a_cliente,"100 %s ",usuario); write(con,mensaje_a_cliente,strlen(mensaje_a_cliente)); //close(con); //pthread_exit(NULL); } else { T++; // Agregamos nuevo usuario a nuestra base de datos printf("Estas en el caso 1 introducir usuario \n"); //resultado=new_user(buf); //if(resultado==0){ // pthread_mutex_lock(&semaforo); /*tabla_partida(buf);*/ sprintf (mensaje_a_cliente,"1 "); write(con,mensaje_a_cliente,strlen(mensaje_a_cliente)); // pthread_mutex_unlock(&semaforo); //}else{ //sprintf (mensaje2,"Usuario no se ha introducido correctamente"); /*con no existe en el contesto actual como variable, el argumento no se ha guardado *en una variable local*/ // sprintf (mensaje_a_cliente,"2 "); // write(con,mensaje_a_cliente,strlen(mensaje_a_cliente)); //} } break; case 2: // autentificamos al usuario printf("Estamos en el caso 2 con el usuario %s \n",usuario); resultado=identify_user(buf); // autentificacion del usuario es correcta if(resultado==0) { /* le paso la "con" a la estructura Tusuario y la guardo en la variable conexion de esa estructura.*/ t.conexion=con; /* guardo el nombre del usuario en la estructura de Tusuario en la variable nombre.*/ strcpy(t.nombre,usuario); printf("Se ha anadido correctamente el nombre dentro de la estructura Tusuario %d %s\n",t.conexion,t.nombre); pon_usuario (&mi_lista,t); escribir_lista (mi_lista); sprintf (mensaje_a_cliente,"3 "); write(con,mensaje_a_cliente,strlen(mensaje_a_cliente)); } else { printf("El usuario o contrasena no son las correctas \n"); sprintf (mensaje_a_cliente,"2 "); write(con,mensaje_a_cliente,strlen(mensaje_a_cliente)); } break; case 3: // Listamos a los jugadores conectados. construir_lista(mi_lista,con); //printf("aqui ya bloqueo\n") //printf("Este es el resultado --%s---",mensaje_respuesta); break; /*** DE MOMENTO LO UNICO QUE PODEMOS HACER SIN TENER THREADS EN EL CLIENTE * TODO LO QUE VIENE DEBAJO NO SE PUEDE IMPLEMENTAR SIN CONCURENCIA * AHORA TENIENDO EL VALOR DE CON BIEN PUESTO SACAR LA LISTA ES UNA TONTERIA * Y LA LISTA TIENE QUE SER GLOBAL * case 4: sprintf(mensaje2,"Estamos en el caso 4 \n"); datos1=lista_fecha(buf); [con no existe en el contesto actual como variable, el argumento no se ha guardado en una variable local] write(con,datos1,strlen(datos1)); break; case 5: printf("Estamos en el caso 5 \n"); datos2=lista_ganadores(buf); [con no existe en el contesto actual como variable, el argumento no se ha guardado *en una variable local] write(con,datos2,strlen(datos2)); break; case 6: printf("Estamos en el caso 6, a continuación construiremos la lista \n"); construir_lista (mi_lista, msge_lista); sprintf (mensaje2,"La lista es: %s\n",msge_lista); [ con no existe en el contesto actual como variable, el argumento no se ha guardado en una variable local] //write(con,mensaje2,strlen(mensaje2)); // Me he quedado aqui..... break; case 7: printf("Estamos en el caso 7,buscaremos al usuario y lo elinaremos de la lista de conectados \n"); [con no existe en el contesto actual como variable, el argumento no se ha guardado en una variable local] t.conexion=con; strcpy(t.nombre,usuario); printf("El usuario a eliminar es %s",usuario); int p= buscar (usuario, mi_lista); printf (" %s está en la posición %d\n",usuario,p); eliminar (p, &mi_lista); * construir_lista (mi_lista, msge_lista); * printf ("La lista es: %s\n",msge_lista); * sprintf (mensaje2,"La lista es: %s\n",msge_lista); * [con no existe en el contesto actual como variable, el argumento no se ha guardado * en una variable local] * write(con,mensaje2,strlen(mensaje2)); * break; **********************************************************************************************/ /*fin del switch*/ } nchar=read(con,buf,MAX); //nchar indica el numero de caractareres recibidos buf[nchar]='\0'; printf("Se ha recibido el mensaje %s \n",buf); code=identify(buf); printf("el codigo es: %d\n",code); /*fin del while*/ } /* Enviamos mensaje de logoff al Cliente, FALTA ELIMINAR CLIENTE DE LA LISTA DE CONECTADOS * Cerramos el socket, Matamos el Threads y decrementamos el numero de Threads usados*/ sprintf (mensaje_a_cliente,"100 %s ",usuario); write(con,mensaje_a_cliente,strlen(mensaje_a_cliente)); // int u = buscar(usuario,mi_lista); //eliminar(u,&mi_lista); T--; C--; close(con); pthread_exit(NULL); }