Ayuda con el codigo pleasee

Moderador: yalmar

Foro cerrado salvo peticion.

Ayuda con el codigo pleasee

Notapor Ziara » Lun Dic 03, 2007 7:56 am

Hola por si alguien me puede echar una mano.. tengo dudas con un código que aparece abajo:

/* convert a numeric IP address to a string */
#define IPTOSBUFFERS 12
char *iptos(u_long in)
{
static char output[IPTOSBUFFERS][3*4+3+1];
static short which;
u_char *p;

p = (u_char *)∈
which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1);
sprintf(output[which], "%d.%d.%d.%d", p[0], p[1], p[2], p[3]);
return output[which];
}

NO ENTIENDO muy bien el funcionamiento de cómo convierte un número IP a un string para que aparezca en pantalla.

la funcíon es llamada desde :

printf("\tAddress: %s\n",
iptos(((struct sockaddr_in *)a->addr)->sin_addr.s_addr));

donde (((struct sockaddr_in *)a->addr)->sin_addr.s_addr)) apunta a una dirección IP y lo que supuestamente hace iptos es convertirlo en un string

me gustaría trasladar dicha función al Builder c++ y en vez usar printf, usar ShowMessage, pero no he tenido éxito.

Alguien tiene alguna idea?? gracias y un saludo
Ziara
Novato
Novato
 
Mensajes: 12
Registrado: Lun Dic 03, 2007 7:27 am


Re: Ayuda con el codigo pleasee

Notapor ivancp » Jue Ene 17, 2008 10:14 pm

Comentando el codigo

Código: Seleccionar todo
  1.  

  2. //Esta linea indica el maximo de numeros de ip que puede almacenar en la variable, output

  3. // ya que esta es static.

  4. // short which es la variable que va contando en que buffer se ecuentra.

  5.  

  6. #define IPTOSBUFFERS 12  

  7.  

  8. char *iptos(u_long in)

  9. {

  10. static char output[IPTOSBUFFERS][3*4+3+1];  

  11. //refiere a los caracteres 255 por 4 + 3 puntos y 1 extra por si acaso.

  12.  

  13. static short which;  //Inicialmente es 0

  14.  

  15. //convirtiendo el parametro long in, en cadena.

  16. u_char *p;

  17. p = (u_char *)∈

  18. //Incrementando el buffer actual,

  19. //si es masde 12, entonces vuelve a iniciar con el 0

  20.  

  21. which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1);  

  22.  

  23. Obtiene cada cada caracter de la variable p y lo pasa con formato entero (%d) al buffer actual (output)

  24.  

  25. sprintf(output[which], "%d.%d.%d.%d", p[0], p[1], p[2], p[3]);

  26.  

  27. //retorna el indice actual (which) del array de cadenas (output)

  28. return output[which];

  29. }

Imagen @latindev | Mi Blog
Por favor lee las reglas del foro
Avatar de Usuario
ivancp
Colaborador
Colaborador
 
Mensajes: 680
Registrado: Jue Sep 06, 2007 12:58 pm



    

Volver a C++ Builder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados