一,用於存儲參與(IP)Windows套接字通信的計算機上的一個internet協定(IP)地址。為了統一地址結構的表示方法 ,統一接口函式,使得不同的地址結構可以被bind()、connect()、recvfrom()、sendto()等函式調用。但一般的編程中並不直接對此數據結構進行操作,而使用另一個與之等價的數據結構sockaddr_in。這是由於Microsoft TCP/IP套接字開發人員的工具箱僅支持internet地址欄位,而實際填充欄位的每一部分則遵循sockaddr_in數據結構,兩者大小都是16位元組,所以二者之間可以進行切換。
基本介紹
- 外文名:sockaddr
- 性質:通用地址結構
- 定義:struct sockaddr {
- 說明:sa_data : 是14位元組的協定地址
- 頭檔案:<sys/socket.h>
sockaddr
unsigned short sa_family; /* address family, AF_xxx */
char sa_data[14]; /* 14 bytes of protocol address */
};
sockaddr_in
short int sin_family; /* Address family */
unsigned short int sin_port; /* Port number */
struct in_addr sin_addr; /* Internet address */
unsigned char sin_zero[8]; /* Same size as struct sockaddr */
};
sin_family:指代協定族,在socket編程中只能是AF_INET
sin_port:存儲連線埠號(使用網路位元組順序)
sin_addr:存儲IP位址,使用in_addr這個數據結構
sin_zero:是為了讓sockaddr與sockaddr_in兩個數據結構保持大小相同而保留的空位元組。
union {
struct{ unsigned char s_b1,s_b2, s_b3,s_b4;} S_un_b;
struct{ unsigned short s_w1, s_w2;} S_un_w;
unsigned long S_addr;
} S_un;
} IN_ADDR;