C/C++ はネットワーク カード名を通じて IPv4 アドレスを取得します

ネットワークカード名から対応するIPアドレスを取得します。

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");//指定网卡名称
    //addr
    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);//打印网卡对应的ip地址
    }
    else
    {
    
    
    	printf("utl_ifconfig_build_attr SIOCGIFADDR failed--[%d][%s]\n", errno, strerror(errno));
    }
    return 0;
}

おすすめ

転載: blog.csdn.net/weixin_37926485/article/details/130873934