Linux C 获取本机IP

Linux获取本机IP
#include <stdio.h>
#include 
<sys/ioctl.h>
#include 
<sys/socket.h>
#include 
<sys/types.h>
#include 
<netdb.h>
#include 
<net/if.h>
#include 
<arpa/inet.h>
#define ERRORIP "cannot find host ip"
char *ip_search(void)
{
    
int sfd, intr;
    
struct ifreq buf[16];
    
struct ifconf ifc;
    sfd 
= socket (AF_INET, SOCK_DGRAM, 0); 
    
if (sfd < 0)
        
return ERRORIP;
    ifc.ifc_len 
= sizeof(buf);
    ifc.ifc_buf 
= (caddr_t)buf;
    
if (ioctl(sfd, SIOCGIFCONF, (char *)&ifc))
        
return ERRORIP;
    intr 
= ifc.ifc_len / sizeof(struct ifreq);
    
while (intr-- > 0 && ioctl(sfd, SIOCGIFADDR, (char *)&buf[intr]));
    close(sfd);
    
return inet_ntoa(((struct sockaddr_in*)(&buf[intr].ifr_addr))-> sin_addr);
}
int main(void)
{
    printf(
"%s\n", ip_search());
    
return 0;
}

 转,完全不懂啊,( > c < ) !

原文地址:https://www.cnblogs.com/yangyh/p/1761164.html