在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【網絡編程】從ifconfig命令中取得機器的ip地址

嵌入式物聯網開發 ? 來源:嵌入式物聯網開發 ? 作者:嵌入式物聯網開發 ? 2022-08-31 13:15 ? 次閱讀

熟悉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輸出是保持一致的。

以上測試代碼是筆者在平時工作中積累的代碼,可直接用于生產環境。使用過程,若發現問題,歡迎隨時交流討論,互相提高。謝謝。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11423

    瀏覽量

    212379
  • 命令
    +關注

    關注

    5

    文章

    723

    瀏覽量

    22635
  • 網絡編程
    +關注

    關注

    0

    文章

    72

    瀏覽量

    10447
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    常見的shell命令網絡相關命令

    192.168.0.232。IP地址的一般格式為:類別+網絡標號+主機標識。其中類別用來區分IP地址的類型,
    發表于 08-20 09:50

    NanoPi NEO - 使用命令行查看IP 地址和主機名 - 04

    :? NanPi NEO已成功運行UbuntuCore系統,并且保證NEO能聯網。1).打開終端,輸入以下命令,即可查看NanoPi NEO 的IP 地址:#ifconfig eth0
    發表于 05-06 13:50

    Linux如何配置IP地址

    ifconfig命令:查看與配置網絡狀態的命令// 查看當前計算機所有網卡的配置信息#ifconfig// 查看某網卡的配置信息,如eth0
    發表于 07-15 07:25

    ifconfig改變IP地址重啟后變成默認地址是為什么?

    [td]A40i開發板,通過ifconfig改變的ip地址,重啟后就變成auto_config_network默認的ip
    發表于 01-13 06:31

    如何用DOS命令查看自己的IP地址

    P地址IP協議提供的一種統一的地址格式,互聯網上的每一個網絡和每一臺電腦都有一個邏輯地址,說的通俗一點
    發表于 01-17 15:50 ?1.3w次閱讀
    如何用DOS<b class='flag-5'>命令</b>查看自己的<b class='flag-5'>IP</b><b class='flag-5'>地址</b>

    linux的ip命令旨在取代ifconfig

    linux的ip命令ifconfig類似,但前者功能更強大,并旨在取代后者。使用ip命令,只需一個命令
    的頭像 發表于 02-02 16:07 ?3257次閱讀
    linux的<b class='flag-5'>ip</b><b class='flag-5'>命令</b>旨在取代<b class='flag-5'>ifconfig</b>

    網絡通信技術:IP地址和MAC地址的差異

    了解完網絡協議,我們會發現,網絡通信的五層模型里,有兩個很重要的概念:IP 地址和 MAC 地址。 那么
    的頭像 發表于 10-22 15:12 ?5085次閱讀
    <b class='flag-5'>網絡</b>通信技術:<b class='flag-5'>IP</b><b class='flag-5'>地址</b>和MAC<b class='flag-5'>地址</b>的差異

    linux系統查看ip地址命令

    在Linux系統,可以使用ifconfig命令來查看IP地址ifconfig
    的頭像 發表于 11-08 15:09 ?3390次閱讀

    ubuntu系統ip地址配置

    在Ubuntu系統配置IP地址,可以采用兩種方式: 通過命令直接配置。打開終端,輸入以下命令: sudo
    的頭像 發表于 11-13 17:01 ?1.3w次閱讀

    linux查看物理接口的命令

    顯示和配置網絡接口。它可以顯示當前系統上的所有網絡接口及其配置信息。以下是ifconfig命令的用法和輸出示例: ifconfig -a 這
    的頭像 發表于 11-16 16:48 ?1699次閱讀

    CentOS7系統網絡配置命令

    們來配置網絡接口、IP地址、網關、DNS服務器等。 查看網絡接口(ifconfig命令):
    的頭像 發表于 11-17 11:07 ?5163次閱讀

    ifconfig配置靜態ip命令

    ifconfig命令用于配置和管理網絡接口,包括接口的IP地址、子網掩碼、網關、以及其他網絡配置
    的頭像 發表于 11-27 14:31 ?5449次閱讀

    linux更改ip步驟命令

    inux是一種廣泛應用于服務器和嵌入式設備的操作系統,通過更改IP地址,可以對網絡進行重新配置和優化,以滿足不同的需求。在Linux,可以使用不同的
    的頭像 發表于 11-27 14:38 ?1971次閱讀

    linux系統修改ip命令

    Linux系統修改IP命令是掌握Linux網絡管理的基礎之一。在Linux操作系統,我們可以使用命令行工具來實現對
    的頭像 發表于 11-27 15:17 ?2340次閱讀

    Linux ip命令常用操作

    Linux?ip命令常用操作 在Linux系統ip命令是用于管理網絡接口和路由的強大工具。相
    的頭像 發表于 02-19 10:23 ?462次閱讀
    主站蜘蛛池模板: 欧美综合色 | 黄色毛片儿| 日韩成人在线影院 | 一级特黄视频 | 最色网在线观看 | 特级aaa片毛片免费观看 | 天天看天天干天天操 | 欧美xxxx色视频在线观看 | 神马午夜在线观看 | 无码一区二区三区视频 | 国产精品免费观看网站 | 4399一级成人毛片 | 在线色片 | 美女视频黄a视频美女大全 美女视频一区二区 | 亚洲怡红院在线 | 欧美色综合久久 | 日日射夜夜 | 午夜短视频 | 婷婷激情五月综合 | 四虎永久免费地址在线网站 | 国产做a爰片久久毛片a | 色视频在线观看在线播放 | 起碰成人免费公开网视频 | 午夜视频黄 | 国产无套视频在线观看香蕉 | 亚洲国产成人久久午夜 | 男女艹逼软件 | 国产色综合一区二区三区 | 免费香蕉视频国产在线看 | 欧美性色生活片天天看99 | 色婷婷精品大全在线视频 | 免费看日本大片免费 | 2021久久精品国产99国产精品 | 国产美女精品久久久久久久免费 | 国产老肥熟xxxx | 亚洲三级视频 | 奇米一区二区三区四区久久 | 成年免费大片黄在线观看免费 | 色网站在线 | 精品成人毛片一区二区视 | 看5xxaaa免费毛片 |