Пример #1
0
//Envía un paquete tipo datagrama desde este socket
int SocketDatagrama::envia(PaqueteDatagrama & p)
{
   direccionForanea.sin_family = AF_INET;
   direccionForanea.sin_addr.s_addr = inet_addr(p.obtieneDireccion());
   direccionForanea.sin_port = htons(p.obtienePuerto());
   sendto(s, (char *)p.obtieneDatos(), p.obtieneLongitud(), 0, (struct sockaddr *) &direccionForanea, sizeof(direccionForanea));
}
Пример #2
0
int SocketDatagrama::recibe(PaqueteDatagrama & p)
{
    unsigned int addr_len = sizeof(direccionForanea);
    bzero((char *)&direccionForanea, sizeof(direccionForanea));
    int regreso = (int)recvfrom(s,p.obtieneDatos(),p.obtieneLongitud(), 0, (struct sockaddr *) &direccionForanea, &addr_len);
    
    p.inicializaPuerto(ntohs(direccionForanea.sin_port));
    p.inicializaIp(inet_ntoa(direccionForanea.sin_addr));
    //std::cout << "Mensaje recibido de: " << inet_ntoa(direccionForanea.sin_addr) << ":" << ntohs(direccionForanea.sin_port) << std::endl;
    return regreso;
}
// Recibe un paquete tipo datagrama proveniente de este socket
int SocketDatagrama::recibe(PaqueteDatagrama &p) {
  int retorno;
  socklen_t clilen;  // Ojo no compila si es un tipo int en C
  clilen = sizeof(direccionForanea);
  retorno = recvfrom(s, (char *)p.obtieneDatos(), p.obtieneLongitud(), 0,
                     (struct sockaddr *)&direccionForanea, &clilen);
  p.inicializaPuerto(ntohs(direccionForanea.sin_port));
  p.inicializaIp(inet_ntoa(direccionForanea.sin_addr));

  return retorno;
}
int SocketDatagrama::envia(PaqueteDatagrama & p)
{
	int status;
	//char *datos = p.obtieneDatos();
	direccionForanea.sin_family = AF_INET;
	direccionForanea.sin_addr.s_addr = inet_addr((char *)p.obtieneDireccion());
	direccionForanea.sin_port = htons(p.obtienePuerto());
	
	status = sendto(s, p.obtieneDatos(), p.obtieneLongitud(), 0, (struct sockaddr *) &direccionForanea, sizeof(direccionForanea));
	//cout << (char*) p.obtieneDatos() << endl;
	return status;
}
int SocketDatagrama::recibe(PaqueteDatagrama &p, int size)
{
	
	//char *datos = new char[p.obtieneLongitud()];
	socklen_t clilen = sizeof(direccionForanea);
	
	int status = recvfrom(s, (char *)p.obtieneDatos(), p.obtieneLongitud(),0, (struct sockaddr *)&direccionForanea, &clilen);
	p.inicializaIp(inet_ntoa(direccionForanea.sin_addr));
	p.inicializaPuerto(ntohs(direccionForanea.sin_port));
	//cout << "Recibiendo de " << inet_ntoa(direccionForanea.sin_addr) << " en el puerto : " <<ntohs(direccionForanea.sin_port)<<endl;
	//cout << &res << endl;
	//printf("%d",res);
	return status;
}
Пример #6
0
int main()
{
	SocketDatagrama server = SocketDatagrama(7200);
	server.setBroadcast(true);
	PaqueteDatagrama in = PaqueteDatagrama(0);
	printf("xD\n");
	while(1)
	{
		server.recibe(&in);
		printf("Recibe de %s:%d\n", in.obtieneDireccion(), in.obtienePuerto());
		PaqueteDatagrama out = PaqueteDatagrama(NULL,0,in.obtieneDireccion(), in.obtienePuerto());
		server.envia(&out);
	}
}
Пример #7
0
int main()
{
	SocketDatagrama socket = SocketDatagrama(7300);
	int * numeros;
	PaqueteDatagrama datagrama = PaqueteDatagrama( 2 * sizeof(int));
	socket.recibe(&datagrama);
	numeros = (int *) datagrama.obtieneDatos();
	
	int * ans = (int *)malloc(sizeof(int));
	*ans = numeros[0] + numeros[1];
	cout 	<< "Numeros recibidos " << numeros[0] << " y " << numeros[1] 
			<< " de " << datagrama.obtieneDireccion() << ":" << datagrama.obtienePuerto() << endl;
	PaqueteDatagrama databack =  PaqueteDatagrama((char*) ans, sizeof(int), datagrama.obtieneDireccion(), datagrama.obtienePuerto());
	socket.envia(&databack);
	return 0;
}
// Recibe un paquete tipo datagrama proveniente de este socket
int SocketDatagrama::recibeTimeOut(PaqueteDatagrama &p) {
  int retorno;
  socklen_t clilen;  // Ojo no compila si es un tipo int en C
  clilen = sizeof(direccionForanea);
  retorno = recvfrom(s, (char *)p.obtieneDatos(), p.obtieneLongitud(), 0,
                     (struct sockaddr *)&direccionForanea, &clilen);
  p.inicializaPuerto(ntohs(direccionForanea.sin_port));
  p.inicializaIp(inet_ntoa(direccionForanea.sin_addr));
  if (retorno < 0) {
    if (errno == EWOULDBLOCK)
      fprintf(stderr, "Tiempo para recepción transcurrido\n");
    else
      fprintf(stderr, "Error en recvfrom\n");
  }
  return retorno;
}
//----------------------------------------------------
// Recibir, en packRecv, cada mensaje desde clienteSMS
//----------------------------------------------------
void recibirVoto(void){
	int i=0;
	cout<<"Iniciando escucha..."<<endl;
	while(1){
		struct Mensaje* voto;
		char* sentencia;
		if(socketV.recibe(packRecv) != -1){
			
			voto = (struct Mensaje*) packRecv.obtieneDatos();
			
			//cout << "--------------------------"<<endl;
			cout << i+1<<"°] Voto recibido"     <<endl;
			/*cout << "--------------------------"<<endl;
			cout << "Celular: "<< voto->celular <<endl;
			cout << "CURP:    "<< voto->CURP    <<endl;
			cout << "Partido: "<< voto->partido <<endl;
		    cout << "Nombre:  "<< voto->nombre  <<endl;
		    cout << "--------------------------"<<endl<<endl;*/
			i++;
			nuevoVoto(voto); 
			
			/*
			*Parte que guarda en el log la estructura
			*/
			char* votoChar;
			char vo[150] ="";
			strcat (vo,voto->celular);
			strcat (vo,"|");
			strcat (vo,voto->CURP);
			strcat (vo,"|");
			strcat (vo,voto->partido);
			strcat (vo,"|");
			strcat (vo,voto->nombre);
			votoChar = vo;
			write_journal_entry(votoChar);
		}//else{ cout<<"S_TO"<<endl;}
	}
	
}