socket编程基础1——hostent、in_addr、gethostbyname、inet_ntoa
2021-07-09 18:06
标签:字符 www bsp char 失败 baidu union 比特 net h_name 地址的正式名称。 此函数调用入参为主机名或者域名,例如www.google.com,wpc等等。函数返回一个指向struct hostent结构类型的指针,如果调用失败,就返回一个NULL。 返回的struct hostent结构体中的h_addr_list是一个指针数组,数组中的每个元素可以看作是指向in_addr型的指针。之所以定义为char**,是因为hostent结构支持 多种地址类型。 通过gethostbyname("www.baidu.com")得到hostent之后可以打印出如下内容: 函数的功能是将网络字节序的地址转化为带“.”格式的IP地址字符串。 socket编程基础1——hostent、in_addr、gethostbyname、inet_ntoa 标签:字符 www bsp char 失败 baidu union 比特 net 原文地址:http://www.cnblogs.com/fangyan5218/p/7092064.html1. struct hostent结构体
struct hostent
{
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
#define h_addr h_addr_list[0]
};
h_aliases 预备名称(别名)的指针。
h_addrtype 地址类型; 通常是AF_INET。
h_length 地址的比特长度。
h_addr_list 主机网络地址指针。网络字节顺序。
h_addr h_addr_list中的第一地址。2. in_addr结构体
#include
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;
3. gethostbyname()函数
#include
host->h_addr_list[0][0] = 14
host->h_addr_list[0][1] = 215
host->h_addr_list[0][2] = 177
host->h_addr_list[0][3] = 37
4. inet_ntoa ()函数
#include
char *inet_ntoa (struct in_addr);
上一篇:php第一天
下一篇:JSON总结-持续更新补充
文章标题:socket编程基础1——hostent、in_addr、gethostbyname、inet_ntoa
文章链接:http://soscw.com/essay/102894.html