Beispiel #1
0
int main()
{
    int num[2];
    std::string ip;
    std::stringstream sstm;
    int *res = NULL;
    SocketDatagrama socket;
    num[0] = 2;
    num[1] = 5;
    PaqueteDatagrama paq1(sizeof(int));
    socket.setTiempoEspera(0.5);
    
    for (int i = 1; i<=20; i++) {
        //sstm << "192.168.0." << i;
        sstm << "10.16.0." << i;
        ip = sstm.str();
        std::cout << "ip:" << ip << std::endl;
        sstm.str("");
        PaqueteDatagrama paq((char *)num,2 * sizeof(int),(char *)ip.c_str(),7200);
        socket.envia(paq);
        if(socket.recibe(paq1) != -1)
        {
            res = (int *)paq1.obtieneDatos();
            std::cout << "RESPUESTA: " << *res << "DESDE: "<< ip << std::endl;
        }
        else
        {
            std::cout << "PERDIDO DESDE: " << ip << std::endl;
        }
        
    }
    
    return 0;
}
int main()
{
    char ip[] = "192.168.0.113";
    
    std::vector<std::string> vectorIps;
    vectorIps.push_back (std::string("102.168.0.113"));
    //vectorIps.push_back (std::string("102.168.1.100"));
    //vectorIps.push_back (std::string("102.168.1.105"));
    vectorIps.push_back (std::string("102.168.0.200"));
    //vectorIps.push_back (std::string("102.168.1.240"));
    int tam = vectorIps.size();
    int *num = new int[tam+1];
    int i = 0;
    num[i++] = tam;
    for (std::vector<std::string>::iterator it = vectorIps.begin(); it != vectorIps.end(); ++it) {
        int part = 0;
        std::string::size_type punto = it->find_last_of('.');
        std::stringstream stream(it->substr(punto+1));
        stream >> part;
        num[i++] = part;
    }
    
    SocketDatagrama socket(7474);
    /*num[0] = 5;
    num[1] = 20;
    num[2] = 100;
    num[3] = 105;
    num[4] = 200;
    num[5] = 240;*/
    PaqueteDatagrama paq((char *)num,i * sizeof(int),ip,7474);
    socket.envia(paq);
    std::cout << "ENVIADO " << std::endl;
    return 0;
}
Beispiel #3
0
void *broadcast(void * aux)
{
   SocketDatagrama * sok = (SocketDatagrama *)aux;
   int num[2] = {2,5};
   PaqueteDatagrama paq((char *)num,2 * sizeof(int),ipBroadcast,puertoBroadcast);
   while(1) {
      sem_wait(&mutex1);
      std::cout << "enviando..." << std::endl;
      sok->envia(paq);
      sleep(10);
      sem_post(&mutex2);
   }
   pthread_exit(0);
}
Beispiel #4
0
int main()
{
    int num[2];
    char ip[] = "192.168.0.116";
    int *res;
    SocketDatagrama socket;
    num[0] = 2;
    num[1] = 5;
    PaqueteDatagrama paq((char *)num,2 * sizeof(int),ip,7200);
    socket.envia(paq);
    PaqueteDatagrama paq1(sizeof(int));
    socket.recibe(paq1);
    res = (int *)paq1.obtieneDatos();
    std::cout << "RESPUESTA: " << *res << std::endl;
    
    return 0;
}
Beispiel #5
0
void enviaToken()
{
    int tam = vectorIps.size();
    int *num = new int[tam+1];
    int i = 0;
    num[i++] = tam;
    std::vector<std::string>::iterator it ;
    for (it = vectorIps.begin(); it != vectorIps.end(); ++it) {
        int part = 0;
        std::string::size_type punto = it->find_last_of('.');
        std::stringstream stream(it->substr(punto+1));
        stream >> part;
        num[i++] = part;
    }
    it = vectorIps.begin();
    
    SocketDatagrama socket2;
    PaqueteDatagrama paq((char *)num,i * sizeof(int),(char *)it->c_str(),7474);
    socket2.envia(paq);
    std::cout << "ENVIADO TOKEN" << std::endl;
}
Beispiel #6
0
int main(int argc, char **argv)
{
	struct birdPackage infoToSend, infoReceived;
	int	port;
	char serverIp  [16];
	if (argc != 3) {
        std::cout << "USO flappy <serverIp> <port>" << std::endl;
		exit(-1);
	}

	strcpy(serverIp, argv[1]);
	port = atoi(argv[2]);

	SocketDatagrama	socket;

	std::cout << "Enviando al servidor: " << serverIp << " : " << port << " datos iniciados" << std::endl;

	bzero(&infoToSend,sizeof(birdPackage));
	bzero(&infoReceived,sizeof(birdPackage));

	/* CONEXION POR PRIMERA VEZ */
	infoToSend.opcode = NEW;

	std::cout << "OPCODE: " << infoToSend.opcode << std::endl;

	PaqueteDatagrama paq((char *)&infoToSend, sizeof(birdPackage), serverIp, port);
	socket.envia(paq);

    PaqueteDatagrama receive(sizeof(birdPackage));
    socket.recibe(receive);

    memcpy(&infoReceived, receive.obtieneDatos(), sizeof(birdPackage));

	if(infoReceived.opcode == DENY) //Se rechaza al jugador, por lo que se tiene que salir
	{
		std::cout << "Partida llena intente más tarde..." << std::endl;
		exit(-1);
	}else{
		nJugador = infoReceived.jugadorNum;
		infoToSend.opcode = JUMP;
		std::cout << "Partida iniciada, jugador: " << nJugador << std::endl;
	}

	SDL_Init(SDL_INIT_VIDEO);
	SDL_Window     *ventana = SDL_CreateWindow("Hi", 200, 200, 864, 510, SDL_WINDOW_SHOWN);
	SDL_Renderer   *render = SDL_CreateRenderer(ventana, -1, SDL_RENDERER_ACCELERATED);
	//se carga la imagen que contiene todos los graficos
	SDL_Surface * bmp = SDL_LoadBMP("atlas.bmp");
	//se define el blanco como color transparente
	SDL_SetColorKey(bmp, 1, SDL_MapRGB(bmp->format, 255, 255, 255));
	SDL_Texture    *textura = SDL_CreateTextureFromSurface(render, bmp);
	SDL_FreeSurface(bmp);
	SDL_Event	event;
	if (textura == NULL) {
        std::cout << "FAILED TO FIND THE IMAGE" << std::endl;
	}
	SDL_RenderClear(render);
	renderFondo(render, textura);

	//Inicializa la posición de los pajaros dentro de la pantalla, pasandolos del atlas.bmp al recuadro del juego
	initPajarosOrigen(render, textura);
	SDL_RenderPresent(render);


	int		done = 1;
	double		angulo = 330;
	const int	FPS = 24;
	//Cuantos frames por segundo queremos, 60 es el que utilizan los televisores
    const int	DELAY_TIME = 1000.0f / FPS;
	//1000 ms entre los fps da el numero de milisegundos entre cada frame
    Uint32 frameStart, frameTime;
	while (done) {
		frameStart = SDL_GetTicks();

		//validacion del piso
		if (rectangulo_destino[nJugador].y < 500) {
			rectangulo_destino[nJugador].y += 10;
		}
		//validacion del angulo maximo
		if (angulo < 450) {
			angulo += 15;
		}
		//mientras exista un evento en el pila de eventos
			while (SDL_PollEvent(&event)) {
			//salto
			if (event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_SPACE) {
				rectangulo_destino[nJugador].y -= 100;
				angulo = 300;
				infoToSend.opcode = 1;
			} else if (event.type == SDL_QUIT) {
				infoToSend.opcode = CLOSE;
				done = 0;
			}
		}
		//enviar Paquete con las coordenadas
		infoToSend.jugadorNum = nJugador;
		infoToSend.posicionJUMP_X[nJugador] = rectangulo_destino[nJugador].x;
		infoToSend.posicionJUMP_Y[nJugador] = rectangulo_destino[nJugador].y;
		infoToSend.angulo[nJugador] = angulo;
		PaqueteDatagrama paq((char *)&infoToSend, sizeof(birdPackage), serverIp, port);
		socket.envia(paq);
		//Recibir paquete con las coordenadas actualizadas
		PaqueteDatagrama receive(sizeof(birdPackage));
    	socket.recibe(receive);
    	memcpy(&infoReceived, receive.obtieneDatos(), sizeof(birdPackage));
		//se pinta actualiza el render
		SDL_RenderClear(render);
		renderFondo(render, textura);

		int i = 0;
		//Actualiza la posicion de los pajaros
		for (int i = 0; i < 3; ++i)
		{
			rectangulo_destino[i].x = infoReceived.posicionJUMP_X[i];
			rectangulo_destino[i].y = infoReceived.posicionJUMP_Y[i];
			angulos[i] = infoReceived.angulo[i];

		}
		for (i = 0; i < infoReceived.jugadoresTotales; ++i)
		{
			//funciona como copy pero rota la imagen con el angulo
			SDL_RenderCopyEx(render, textura, &rectangulo_origen[i], &rectangulo_destino[i], infoReceived.angulo[i], NULL, SDL_FLIP_NONE);
		}
		SDL_RenderPresent(render);

		frameTime = SDL_GetTicks() - frameStart;
		//Tiempo que ha tardado en presentarse el frame
		if (frameTime < DELAY_TIME)//Si es menor al tiempo que deber à ­a ser
		{
			SDL_Delay((int)(DELAY_TIME - frameTime));//Espera un tiempo
		}
	}

	/* Free all objects */
	SDL_DestroyTexture(textura);
	SDL_DestroyRenderer(render);
	SDL_DestroyWindow(ventana);

	/* Quit program */
	SDL_Quit();
	return 0;
}