int main(int argc, char *argv[]){ int socket_fd; if(argc < 3){ fprintf(stderr, "%s <ip> <puerto>\n", argv[0]); return EXIT_FAILURE; } initscr(); raw(); keypad(stdscr, TRUE); noecho(); start_color(); comprobacion(); conexion(&socket_fd, argv[1], atoi(argv[2])); esperar_jugadores(socket_fd); bucle_juego(socket_fd); close(socket_fd); endwin(); return EXIT_SUCCESS; }
int main() { char buffer[TAM]; int sockfd,n; int terminar=0; int inicio=1; struct sockaddr_in serv_addr; struct hostent *server; printf(" CENTRO DE OPERACIONES (COP)\n\n\nComandos: connect ip port | disconnect | get_telemetry | get_datta | erase_datta "); conexion(); server = gethostbyname(ip); //Abre la conexion del socket sockfd = socket( AF_INET, SOCK_STREAM, 0 ); if ( sockfd < 0 ) { perror( "ERROR apertura de socket" ); exit( 1 ); } memset( (char *) &serv_addr, '0', sizeof(serv_addr) ); serv_addr.sin_family = AF_INET; bcopy( (char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length ); serv_addr.sin_port = htons(puerto); if ( connect( sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr ) ) < 0 ) { perror( "conexion" ); exit( 1 ); } //hilo de la conexion while(1) { if (inicio==1) { printf( "\nConectado a la estacion de telemetria\n" ); inicio=0; } printf( "\n Conectado, Ingrese comandos: " ); memset( buffer, '\0', TAM ); fgets( buffer, TAM-1, stdin ); //printf("buffer escritura%s\n",buffer ); n = write( sockfd, buffer, strlen(buffer) ); if ( n < 0 ) { perror( "escritura de socket" ); exit( 1 ); } // Verificando respuestas buffer[strlen(buffer)-1] = '\0'; if( !strcmp( "disconnect", buffer ) ) { terminar = 1; } memset( buffer, '\0', TAM ); //respuesta del servidor n = read( sockfd, buffer, TAM ); if ( n < 0 ) { perror( "lectura de socket" ); exit( 1 ); } //printf( "SERVIDOR: %s\n", buffer ); if( !strcmp( "open", buffer ) ) { sleep(1); printf("Abriendo cliente sin conexion\n" ); socket_cli_i_sc(puerto,ip); }else if (strncmp(buffer,"get_telemetry",13)==0) { strtok(buffer, ","); char *a; a=strtok(NULL, ","); printf("Tiempo %s\n",a); a=strtok(NULL, ","); printf("Precipitacion %s\n",a); a=strtok(NULL, ","); printf("Humedad Relativa %s\n",a); a=strtok(NULL, ","); printf("Tempertura del aire a 1,5 m de altura %s\n",a); a=strtok(NULL, ","); printf("Temperatura del suelo a 10 m de profundidad %s\n",a); } if( terminar==1 ) { close (sockfd); break; //exit(0); } } conexion(); return 0; }
/** * * Funcion que que convierte el cromosma binario en un Arbol, esta funcion es * llamada por la funcionObjetivo del AG * **/ void convertion(bool *chrm, bool grafica) { Arbol *A, *izq, *aux, *aux2; int i, nChrm, h, hmax, setear, nuevo_valor, *array;/* [8] = {6, 0, 16, 7, 1, 18, 4, 21}; */ bool lado = 0; FILE *filetree; char *str; char nombres[][35] = { /* Funciones de Coloracion */ "Greedy Coloring", "ColoringMoreFrequentColor", "ColoringLessFrequentColor", "UnColoring", "ColoringNeighbors", "InterchangeColor", "UncoloringNeighbors", /* Funciones que se repiten - solo de coloracion */ "EqualX", "IfX", "AndX", /* Funciones Genericas */ "While", "If", "And", "Equal", "Or", "Not", /* Terminales */ "vertexLargestDegree","vertexMinimumDegree", "firstVertex", "vertexLowestNumberedColor", "vertexHighestNumberedColor", "vertexMoreFrequentColor", "vertexLessFrequentColor", "vertexSaturationDegree", "vertexMoreUncoloredNeighbors", "vertexIncidenceDegree", "not_Increase?", "ExistUncoloredVertex?", /* Terminales que se repiten */ "vertexLowestNumberedColor", "vertexHighestNumberedColor", "vertexMoreFrequentColor", "vertexLessFrequentColor"}; A = NULL; nChrm = sizeChrm / nByte; contador = nChrm; bandera = 0; h = 0; hmax = 12; array = calloc(nChrm, sizeof(int)); getChrm(chrm, array); for(i=0; i<5; i++) funciones[i] = 1; for(i=5; i<16; i++) funciones[i] = 2; funciones[15] = 1; funciones[6] = 1; for(bandera=0, i=0; i<nChrm; i++) { /* /\* Si el primer elemento es un Terminal se cambia por una Funcion *\/ */ /* if(i == 0 && array[i] > 15) */ /* { */ /* setear = abs((0 % 16) - (array[i] % 16)); */ /* array[0] = (setear < 16) ? setear: 0; */ /* } */ /* /\* Si el ultimo elemento es una Funcion se cambia por un Terminal *\/ */ /* if(i == (nChrm - 1) && array[(nChrm - 1)] < 16) */ /* array[nChrm - 1] = array[nChrm - 1] + 16; */ construir(&A, array[i], i, -1, -1); if(bandera == 0) { /* Guardamos el arbol en otro arbol auxiliar */ aux = A; /* Creamos un segundo Arbol auxiliar con los datos del nodo que correspondia */ aux2 = crearNodo(array[i], i); /* El arbol original lo setiamos y creamos un nodo con una Funcion, que sea siempre con dos argumentos, una funcion generica*/ setear = abs((A->id % 16) - (A->valor % 16)); nuevo_valor = ((setear < 15) ? setear: 14); if(funciones[nuevo_valor] == 1) nuevo_valor = nuevo_valor + 10; if(nuevo_valor == 5 || nuevo_valor == 6) { nuevo_valor = nuevo_valor + 8; } A = crearNodo(nuevo_valor, contador++); /* El nuevo nodo tiene de hijo a la izq al primer auxiliar y el der. al segundo auxiliar si LADO es 0 si es 1 viceversa. Se van rotando para que los arboles no sean tan desbalanciados*/ if(lado == 0) { A->izq = aux; A->der = aux2; lado = 1; } else { A->izq = aux2; A->der = aux; lado = 0; } } bandera = 0; /* printf("Fin Costruir\n\n"); */ } /* Liberar el arreglo con las F y T */ /* free(array); */ rebuilt(A); /* salidaNameArbol(A); */ if(grafica) { i = snprintf(NULL, NULL, "%s/Arbol.dot", ruta_resultados); str = malloc((i+1) *sizeof(char)); snprintf(str, i+1, "%s/Arbol.dot", ruta_resultados); filetree = fopen(str, "w"); free(str); fprintf(filetree, "digraph G{\n"); fprintf(filetree, "%d [ label = \"%s\" ];\n", A->id, nombres[A->valor]); izq = A->izq; fprintf(filetree, "%d [ label = \"%s\" ];\n", izq->id, nombres[izq->valor]); imprimir(A, filetree, nombres); fprintf(filetree, "}"); fclose(filetree); i = snprintf(NULL, NULL, "dot %s/Arbol.dot -o %s/arbol.png -Tpng", ruta_resultados, ruta_resultados); str = malloc((i+1) *sizeof(char)); snprintf(str, i+1, "dot %s/Arbol.dot -o %s/arbol.png -Tpng", ruta_resultados, ruta_resultados); printf("%s\n",str); if(system(str)) printf("No se pudo dibujar el Arbol\n"); free(str); } conexion(A, grafica); freeArbol(A); free(array); }
void MainWindow::on_actionConexion_triggered() { Conexion conexion(this); conexion.exec(); }