分享

SOCKADDR_IN结构,in_addr结构,addrinfo结构的定义

 若渴若愚 2011-10-17
SOCKADDR_IN结构,in_addr结构,addrinfo结构的定义
2010-12-09 10:41
转载自 分享
最终编辑 binboot007
sockaddr_in结构:
struct sockaddr_in{

short sin_family;
unsigned short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
参数解释:
sin_family
Address family (must be AF_INET)
sin_port IP port.(必须要采用网络数据格式,普通数字可以用htons()函数转换成网络数据格式的数字)
sin_addr IP address.(注意:是in_addr结构的成员变量)
sin_zero Padding to make structure the same size as SOCKADDR.(没有实际意义,只是为了
跟SOCKADDR结构在内存中对齐).
注意:
This is the form of the SOCKADDR structure specific to the Internet address family and can be cast to SOCKADDR.

注意:sockaddr和sockaddr_in之间的强制类型转换职能通过指针来转换.(原因:两个内存大小相同而结构体重的数据类型不同)
sockaddr向sockaddr_in转换时:
sockaddr sa
(sockaddr_in*)&sa;

sockaddr_in向sockaddr转换时:
sokcaddr_in sai;
(sockaddr*)&sai
++++++++++++++++++++++++++++++++++++++++++++++++++
in_addr结构
:The in_addr structure represents an IPv4 Internet address.
typedef struct in_addr {
union {
struct {
u_char s_b1,s_b2,s_b3,s_b4;
} S_un_b;
struct {
u_short s_w1,s_w2;
} S_un_w;
u_long S_addr;
} S_un;
} IN_ADDR,
*PIN_ADDR,
FAR *LPIN_ADDR;
参数解释:
S_un_b An IPv4 address formatted as four u_chars.
S_un_w An IPv4 address formatted as two u_shorts.
S_addr An IPv4 address formatted as a u_long.(注意:如果是字符串类型的ip地址可以通过inet_addr()
函数转变成u_long类型的ip地址,如果想从S_addr中得到字符串类型的ip地址可以通过inet_ntoa()
函数)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
addrinfo 结构 注意在ws2tcpip.h文件中定义

The addrinfo structure is used by the getaddrinfo function to hold host address information.

typedef struct addrinfo {
int ai_flags;
int ai_family;
int ai_socktype;
int ai_protocol;
size_t ai_addrlen;
char* ai_canonname;
struct sockaddr* ai_addr;
struct addrinfo* ai_next;
} ADDRINFOA,
*PADDRINFOA;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多