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;
}
Beispiel #2
0
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;

}
Beispiel #3
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();
}