通过远端域名获取主机信息
主机信息结构
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];
|
printf("%d\n",gethostbyname("www.baidu.com")); struct hostent *host = gethostbyname("www.baidu.com"); printf("%d,%s,%s,%s",host->h_addrtype,host->h_name,host->h_aliases[0],host->h_aliases[1],);
|
通过域名获取远端主机IP地址
struct in_addr{ in_addr_t s_addr; }
|
struct in_addr asd; asd.s_addr = ntohl((ulong)host->h_addr_list[0]); printf("%x\n",asd.s_addr);
char* str = inet_ntoa(asd); printf("%s",str);
|
#define h_addr h_addr_list[0];
struct hostent *host = gethostbyname("127.0.0.1");
printf("1 %d\n",host->h_addr); printf("2 %s\n",inet_ntoa(*(struct in_addr*)(host->h_addr))); printf("3 %s\n",host->h_addr); printf("4 %d %d %d %d \n",host->h_addr[0],host->h_addr[1],host->h_addr[2],host->h_addr[3]);
|
inet_ntop的使用
其中第二个参数 void*buf参数是输入的 struct * in_addr类型或者 struct *s_addr类型都可以,最终结果一样。
struct in_addr asd; asd.s_addr = ntohl((ulong)host->h_addr_list[0]); char det[32]; char det2[32];
char det[32]; char det2[32]; char det3[32]; char det4[32]; printf("ipv4- %s\n",inet_ntop(AF_INET,&asd,det,INET_ADDRSTRLEN)); printf("ipv4- %s\n",inet_ntop(AF_INET,&asd.s_addr,det2,INET_ADDRSTRLEN)); printf("ipv4- %s\n",inet_ntop(AF_INET,&(asd.s_addr),det3,INET_ADDRSTRLEN)); printf("ipv4- %s\n",inet_ntop(AF_INET,&((&asd)->s_addr),det4,INET_ADDRSTRLEN));
|
网络编程全套代码下载
网络编程全套代码下载2
网络编程全套代码下载3
网络编程全套代码