hostent h_addr_list
来源:互联网 发布:淘宝详情页排版软件 编辑:程序博客网 时间:2024/04/28 08:04
struct hostent { char FAR * h_name; /* official name of host */ char FAR * FAR * h_aliases; /* alias list */ short h_addrtype; /* host address type */ short h_length; /* length of address */ char FAR * FAR * h_addr_list; /* list of addresses */#define h_addr h_addr_list[0] /* address, for backward compat */};
h_addr_list其实是一个指针数组,数组中每个元素都是in_addr型指针。
typedef struct in_addr { union { struct { UCHAR s_b1,s_b2,s_b3,s_b4; } S_un_b; struct { USHORT s_w1,s_w2; } S_un_w; ULONG S_addr; } S_un;#define s_addr S_un.S_addr /* can be used for most tcp & ip code */#define s_host S_un.S_un_b.s_b2 // host on imp#define s_net S_un.S_un_b.s_b1 // network#define s_imp S_un.S_un_w.s_w2 // imp#define s_impno S_un.S_un_b.s_b4 // imp ##define s_lh S_un.S_un_b.s_b3 // logical host} IN_ADDR, *PIN_ADDR, FAR *LPIN_ADDR;
因为hostent结构支持多种地址类型,所以其定义的h_addr_list是char **型。gethostbyname以后,实际存储情况是这样:
hostent->h_addr_list[0][0] = 127hostent->h_addr_list[0][1] = 0hostent->h_addr_list[0][2] = 0hostent->h_addr_list[0][3] = 1
得到的地址是网络字节顺序。转成正常的字符:
char *ip;ip = inet_ntoa(*(struct in_addr *)*phost->h_addr_list);
向sockaddr_in赋值:
struct sockaddr whereto;struct sockaddr_in *to;memset(&whereto, 0, sizeof(struct sockaddr));to = (struct sockaddr_in *)&whereto;memcpy(&to->sin_addr, hp->h_addr, hp->h_length);
- hostent h_addr_list
- hostent h_addr_list
- hostent
- hostent
- Struct hostent
- hostent sockaddr_in
- 数据结构--hostent
- hostent结构体
- 【转】hostent结构体
- hostent 和in_addr结构
- struct hostent结构体
- hostent 结构体
- struct hostent结构体
- hostent结构体
- struct hostent结构体
- hostent结构体
- gethostbyname && struct hostent 示例
- hostent结构介绍
- VS2010 设置类模板的头注释
- C#----Luence.net2.0 的摸索记录_winvay
- spring mvc 入门例子
- 【Linux设备驱动程序(第三版)】----重要的数据结构
- 求最大连续递增数字串
- hostent h_addr_list
- 从乔布斯的演讲中获得的启示
- Linux下怎么确定Nginx安装目录
- VB.NET版ssl链接(工行查询接口的实现)
- C#----Memcached 的揣摩记录_winvay
- 我的OO观
- 工作2个月
- 自己摸索简单EasySearch效果_winvay
- 有趣的rand()和srand()函数