comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Duda] Estructuras sockaddr_in y sockaddr

  • 0 Respuestas
  • 795 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado r1ghtz0

  • *
  • Underc0der
  • Mensajes: 9
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« en: Octubre 02, 2014, 07:56:01 pm »
Buenas, en primer lugar les digo que no tengo bien claro lo que hacen o para qué sirven estas estructuras, he leído e investigado pero no consigo una explicación que me convenza y me aclare para que sirven o que hacen. Lo primero que les voy transmitir es lo que he entendido acerca de cada una de estas dos estructuras.

Vamos con la primera estructura, la struct sockaddr, esta es una estructura genérica y supuestamente define el dominio del socket, es decir, si el dominio va a ser AF_INET o AF_UNIX. Ahora lo que no entiendo es para qué son esos dos campos que tienen o que valor se les da a esos campos.
Código: C
  1. struct sockaddr
  2. {
  3.    unsigned short sa_family;  /* familia de la dirección */
  4.    char sa_data[14];          /* 14 bytes de la dirección del protocolo */  
  5. };
  6.  
Vamos con la segunda estructura, la struct sockaddr_in, esta si la entiendo un poco más ya que especifica los parámetros del socket, la estructura TCP/IP es la estructura struct sockaddr_in, hasta aquí es todo lo que entiendo.
Código: C
  1. struct sockaddr_in {
  2.    short int sin_family;        /* 1.-Familia de la Dirección               */
  3.    unsigned short int sin_port; /* 2.- Puerto                               */
  4.    struct in_addr sin_addr;    
  5.    unsigned char sin_zero[8];   /* 4.- Del mismo tamaño que struct sockaddr */
  6. };
  7.  

Ahora vamos el siguiente código:
Código: C
  1. struct sockaddr_in Direccion;
  2. Direccion.sin_family = AF_INET;
  3. Direccion.sin_port = Puerto->s_port;
  4. Direccion.sin_addr.s_addr =INADDR_ANY;
  5.  
  6. if (bind (Descriptor, (struct sockaddr *)&Direccion, sizeof (Direccion)) == -1)
  7. {
  8.     No tienes permisos para ver links. Registrate o Entra con tu cuenta ("Error\n");
  9. }
  10.  

Como es posible que el puntero &Dirección de tipo struct sockaddr_in se convierta a uno de struct sockaddr *, si struct sockaddr_in tiene 4 campos y struct sockaddr solo tiene 2 campos. Entonces ve lo que sucede? Un puntero de tipo estructura de 4 campos se convierte a un puntero de tipo estructura de 2 campos.
« Última modificación: Octubre 02, 2014, 11:28:36 pm por Expermicid »

 

¿Te gustó el post? COMPARTILO!



[SOLUCIONADO] Duda con " "

Iniciado por Krisium

Respuestas: 1
Vistas: 1765
Último mensaje Junio 10, 2010, 10:50:35 am
por Xa0s
[SOLUCIONADO] [Taller PHP] Duda taller php 1 ejercicio 2

Iniciado por arthusu

Respuestas: 3
Vistas: 1952
Último mensaje Julio 18, 2011, 02:20:03 am
por arthusu
[SOLUCIONADO] [Taller PHP] Duda taller php 1 ejercicio 2

Iniciado por Only

Respuestas: 2
Vistas: 1536
Último mensaje Agosto 01, 2011, 04:28:03 pm
por Only
[SOLUCIONADO] Duda con Windows 7 de 32 bits & 64 bits

Iniciado por andrestoushit

Respuestas: 2
Vistas: 940
Último mensaje Marzo 15, 2016, 04:01:16 pm
por Lah-Vahn
[SOLUCIONADO] [Taller PHP] Duda taller php 2 ejercicio 3

Iniciado por arthusu

Respuestas: 4
Vistas: 2206
Último mensaje Agosto 05, 2011, 02:00:42 am
por arthusu