ip address 를 c 언어로 어떤 변수에 넣는 방법

익명 사용자의 이미지

현재 unix machine이 할당받은 ip를 어떤 변수에 입력 받아서 출력해보
려고합니다.

흔히 말하는 getip 를 하려고하는데요

어떻게 해야할까요?

꼭 답변 부탁드립니다.

익명 사용자의 이미지

허접입니다..
적당히 고쳐서 쓰세여...

#include
#include
#include
#include

void main()
{
struct ifconf ifc;
struct ifreq *ifr;
struct sockaddr_in *sinptr;
struct in_addr in;
int sockfd,len,lastlen;
char *ptr,*buf,lastname[IFNAMSIZ];
unsigned char *dst_ntoa[20];

sockfd=socket(AF_INET,SOCK_DGRAM,0);
lastlen=0;
len=10*sizeof(struct ifreq); //100 개의 ifreq 구조를
위한 공간을 할당한다.

for (;;)
{
buf=malloc(len);
ifc.ifc_len=len;
ifc.ifc_buf=buf;

if (ioctl(sockfd,SIOCGIFCONF,&ifc)<0)
{
if (lastlen!=0)
{
printf("ioctl error\n");
exit(1);
}
}
else {
if (ifc.ifc_len==lastlen)
break;
lastlen=ifc.ifc_len;
}
len+=10*sizeof(struct ifreq);
free(buf);
}

for (ptr=buf;ptr {
ifr=(struct ifreq *)ptr;
switch (ifr->ifr_addr.sa_family)
{
case AF_INET6
len=sizeof(struct sockaddr_in6);
break;
case AF_INET
default
len=sizeof(struct sockaddr);
break;
}
ptr+=sizeof(ifr->ifr_name)+len;

printf("%s\t",ifr->ifr_name);
sinptr=(struct sockaddr_in *)&ifr->ifr_addr;
in=sinptr->sin_addr;
*dst_ntoa=inet_ntoa(in);
printf("%s\n",*dst_ntoa);
}
}