获取本地IP

来源:互联网 发布:java 解析json 编辑:程序博客网 时间:2024/04/27 22:04

本机可能会有多个IP,下面这段程序可以获得本机IP:

struct hostent *h;

char host[100];

int i;

gethostname(host, 100);

if ((h = gethostbyname(host)) == NULL) {

printf("Error : %s!/n", hstrerror(h_errno));

return;

};

printf("Default IP: %s/n", inet_ntoa (*((struct in_addr *)h->h_addr)));

for (i = 0; i< h->h_length / sizeof(int); i++) {

printf("IP %d : %s/n", i+1, inet_ntoa (*((struct in_addr *)h->h_addr_list[i])));

};

需要注意的是,h->h_addr实际上就是h->h_addr_list[0],是为了向前兼容而保留的。

DNS操作时的错误处理与普通程序不同,gethostbyname通过设置h_errno代表出错号,对应的错误函数有hstrerror()和herror(),分别对应于strerror()和perror()这两个普通的错误函数。