linux cネイティブipアドレスの取得

889 ワード

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main(int argc,char *argv[])
{
	int i=0;
	int sockfd;
	struct ifconf ifc;
	char buf[1024]={0};
	char ipbuf[20]={0};
	struct ifreq *ifr;

	ifc.ifc_len = 1024;
	ifc.ifc_buf = buf;

	if((sockfd = socket(AF_INET, SOCK_DGRAM,0))<0)
	{
	    printf("socket error
"); return -1; } ioctl(sockfd,SIOCGIFCONF, &ifc); ifr = (struct ifreq*)buf; for(i=(ifc.ifc_len/sizeof(struct ifreq)); i > 0; i--) { printf("net name: %s
",ifr->ifr_name); inet_ntop(AF_INET,&((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr,ipbuf,20); printf("ip: %s
",ipbuf); ifr = ifr +1; } return 0; }