网站首页

人工智能P2P分享搜索全网发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

【网络编程】从ifconfig命令中取得机器的ip地址

时间:2022-08-31 13:15

人气:

作者:admin

标签: Linux  命令  网络编程 

导读:【网络编程】Linux平台如何使用代码实现从ifconfig命令中取得机器的ip地址...

熟悉Linux命令行的童鞋都知道,ifconfig命令可以列出当前机器所有网络设备节点对应的IP地址,如下示例所示;

img点击并拖拽以移动

编辑

我们在实际的编程代码中,也需要通过代码来获取本地的IP地址,那么有没有办法,直接在代码中调用【ifconfig】命令行来获取本地的IP地址呢?

答案肯定是有的,本文将给你正确的答案,请按下面的示例代码:

#include 
#include 

int shell_cmd_excute(const char *cmd, char *result, int size)
{
    int ret;
    FILE *fp = NULL;

    fp = popen(cmd, "r");
    if (!fp) {
        perror("popen error: ");
        ret = -1;
        goto exit_entry;    
    }

    ret = fread(result, 1, size, fp);       
    if (ret <= 0) {
        perror("fread error: ");
        ret = -2;
        goto exit_entry;
    }
    if (ret > 1 && ret < size && (result[ret-1] == '\r' || result[ret-1] == '\n')) {
        result[ret-1] = '\0';
    }	    
    ret = 0;

exit_entry:
    if (fp) {
        fclose(fp);    
    }
    return ret;	
}

int get_local_ip_by_ifconfig(const char *interface, char *ip, int size)
{
    int ret;
    char cmd[128];    

    snprintf(cmd, sizeof(cmd), "ifconfig %s | sed -nr 's/.*inet (addr:)?(([0-9]*\\.){3}[0-9]*).*/\\2/p'", interface);
    printf("shell cmd: %s\n", cmd);

    ret = shell_cmd_excute(cmd, ip, size);
    return ret;
}

int main(int argc, const char **argv)
{
    int ret;
    const char *interface;
    char local_ip[128];

    if (argc < 2) {
        printf("Error param input !\n");
        printf("Usage: %s [interface]\n", argv[0]); 
        printf("[interface]: network logic interface, like eth0/ppp0/wlan0/lo ...\n");  
	exit(-1);     
    }

    interface = argv[1];
    ret = get_local_ip_by_ifconfig(interface, local_ip, sizeof(local_ip));
    if (!ret) {
        printf("Get local ip OK, ip = %s\n", local_ip);    
    } else {
        printf("Get local ip FAIL !\n");
    }

    return ret;
}

代码编译:

gcc -o ifconfig_ip ifconfig_ip.c 

代码运行测试:

img

因笔者的Linux环境只有eth0和lo这2个网络设备节点,没有wlan0、ppp0这两个网络设备节点,所以wlan0节点和ppp0这2个节点测试报错了,而eth0和lo可以得到正确的IP地址,与文章开头的ifconfig输出是保持一致的。

以上测试代码是笔者在平时工作中积累的代码,可直接用于生产环境。使用过程,若发现问题,欢迎随时交流讨论,互相提高。谢谢。

审核编辑:汤梓红
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信