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; }
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); }
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; }
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; }
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; }