1、通过网卡名称获取对应的IP地址
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <netdb.h>
#include <net/if.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/socket.h>
int main(int argc, char *argv[])
{
struct ifreq temp_ifreq;
struct sockaddr_in *myaddr;
int fd = 0;
unsigned int ipvalue,maskvalue;
if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
printf("Build socket failed.\n");
return -1;
}
strcpy(temp_ifreq.ifr_name, "ppp0");
if (ioctl(fd, SIOCGIFADDR, &temp_ifreq) >= 0)
{
myaddr = (struct sockaddr_in *)&(temp_ifreq.ifr_addr);
char addr[64] = {
0};
inet_ntop(AF_INET, &myaddr->sin_addr, addr, sizeof(addr));
ipvalue = myaddr->sin_addr.s_addr;
printf("addr:%s\n", addr);
}
else
{
printf("utl_ifconfig_build_attr SIOCGIFADDR failed--[%d][%s]\n", errno, strerror(errno));
}
return 0;
}