获取ip地址的两种方法

      通常获取ip地址有两种方法,第一种为借助socket用ioctl的方法读取本机的ip地址,但是由于该方法需要输入接口的名称, 如,eth0,eth1,br0,eth0.97等等,这对于只需要简单的获取本机ip的需求来说还是过于复杂,本为通过gethostname函数和 gethostbyname函数结合,获取本机ip地址则显得更为简单。它的基本原理就是从文件/etc/hosts中读取和你主机名字相匹配的ip地 址。

示例代码如下:

#include <netdb.h>

#include <stdio.h>

void main(void)

{

char buff[20];
struct hostent * hostaddr;
struct in_addr addr;

gethostname(buff, sizeof(buff) ); //获取本机名
printf("hostname=%s\n",buff);
hostaddr=gethostbyname(buff); //获取本机ip地址
memcpy(&addr.s_addr,hostaddr->h_addr_list[0],sizeof(addr.s_addr));
strcpy(buff,inet_ntoa(addr));
buff[15]=0;
fprintf(stderr,"local ip addres=%s\n",buff);
}

转自:http://hi.baidu.com/babala520/blog/item/a341b11f64ce5afd1ad57607.html#0

原文地址:https://www.cnblogs.com/ymy124/p/2458546.html