Linux下由域名程式設計解析ip地址 (段錯誤(吐核))
阿新 • • 發佈:2019-02-11
#include<stdio.h>
#include<sys/socket.h> //提供socket函式及資料結構
#include<netdb.h> //提供設定及獲取域名的函式
int main(int argc,char *argv[])
{
struct hostent *host;
char hostname[]="www.163.com";
char hostname2[]="www.1fg5t.com";
struct in_addr in;
struct sockaddr_in addr_in;
extern int h_errno;
if((host=gethostbyname(hostname2))!=NULL)
{
memcpy(&addr_in.sin_addr.s_addr,host->h_addr,4);//複製地址
in.s_addr=addr_in.sin_addr.s_addr;
printf("Domain name :%s\n",hostname2);//輸出主機名
printf("IP length: %d \n",host->h_length);//輸出地址長度
printf("Type: %d\n",host->h_addrtype);//輸出型別
printf( "IP :%s\n",inet_ntoa(in));//輸出ip地址
}
else
{
printf("Domain name:%s\n",hostname2);
printf("error: %d\n",h_errno);
printf("%s\n",hstrerror(h_errno));
}
#include<sys/socket.h> //提供socket函式及資料結構
#include<netdb.h> //提供設定及獲取域名的函式
int main(int argc,char *argv[])
{
struct hostent *host;
char hostname[]="www.163.com";
char hostname2[]="www.1fg5t.com";
struct in_addr in;
struct sockaddr_in addr_in;
extern int h_errno;
if((host=gethostbyname(hostname2))!=NULL)
{
memcpy(&addr_in.sin_addr.s_addr,host->h_addr,4);//複製地址
in.s_addr=addr_in.sin_addr.s_addr;
printf("Domain name :%s\n",hostname2);//輸出主機名
printf("IP length: %d \n",host->h_length);//輸出地址長度
printf("Type: %d\n",host->h_addrtype);//輸出型別
printf( "IP :%s\n",inet_ntoa(in));//輸出ip地址
}
else
{
printf("Domain name:%s\n",hostname2);
printf("error: %d\n",h_errno);
printf("%s\n",hstrerror(h_errno));
}
}
警告:隱式宣告與內建函式‘memcpy’不相容 [預設啟用]
加標頭檔案#include<string.h>
編譯連線執行後出現 段錯誤(吐核)
加標頭檔案
#include<arpa/inet.h>//提供IP地址轉換函式