您的位置:首页 > 理论基础 > 计算机网络

Linux网络编程 (获取ip地址 gethostbyname)

2016-03-23 11:14 621 查看
#include<stdio.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netdb.h>
#include<netinet/in.h>
#include<string.h>
#include<stdlib.h>
#include<arpa/inet.h>
int main(int argc,char *argv[])
{
struct hostent *h;
if(argc!=2)
{/*检查命令行*/
fprintf(stderr,"usage:getipaddress");
exit(1);
}
if((h=gethostbyname(argv[1]))==NULL)
{
herror("gethostbyname\n");
exit(2);
}
printf("hostname is %s\n",h->h_name);

printf("ip changed %s\n",inet_ntoa( *((struct in_addr*)h->h_addr) )      );
return 0;
}


需要使用的结构体

struct in_addr {
__be32  s_addr;
};   //ip地址

struct hostent *gethostbyname(const char *name);
//这个函数的传入值是域名或者主机名,例如"www.google.cn"等等。
//传出值,是一个hostent的结构。如果函数调用失败,将返回NULL。
//所在头文件<sys/socket.h>

struct hostent{
char * h_name;
char ** h_aliases;
short h_addrtype;
short h_length;
char ** h_addr_list;
};    //主机信息
#define h_addr h_addr_list[0]

char *inet_ntoa (struct in_addr);
//返回点分十进制的字符串在静态内存中的指针。
//所在头文件:<arpa/inet.h>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: