chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【網(wǎng)絡(luò)編程】從ifconfig命令中取得機(jī)器的ip地址

嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 來(lái)源:嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 作者:嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 2022-08-31 13:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

熟悉Linux命令行的童鞋都知道,ifconfig命令可以列出當(dāng)前機(jī)器所有網(wǎng)絡(luò)設(shè)備節(jié)點(diǎn)對(duì)應(yīng)的IP地址,如下示例所示;

img點(diǎn)擊并拖拽以移動(dòng)

編輯

我們?cè)趯?shí)際的編程代碼中,也需要通過(guò)代碼來(lái)獲取本地的IP地址,那么有沒(méi)有辦法,直接在代碼中調(diào)用【ifconfig】命令行來(lái)獲取本地的IP地址呢?

答案肯定是有的,本文將給你正確的答案,請(qǐng)按下面的示例代碼:

#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 

代碼運(yùn)行測(cè)試:

img

因筆者的Linux環(huán)境只有eth0和lo這2個(gè)網(wǎng)絡(luò)設(shè)備節(jié)點(diǎn),沒(méi)有wlan0、ppp0這兩個(gè)網(wǎng)絡(luò)設(shè)備節(jié)點(diǎn),所以wlan0節(jié)點(diǎn)和ppp0這2個(gè)節(jié)點(diǎn)測(cè)試報(bào)錯(cuò)了,而eth0和lo可以得到正確的IP地址,與文章開(kāi)頭的ifconfig輸出是保持一致的。

以上測(cè)試代碼是筆者在平時(shí)工作中積累的代碼,可直接用于生產(chǎn)環(huán)境。使用過(guò)程,若發(fā)現(xiàn)問(wèn)題,歡迎隨時(shí)交流討論,互相提高。謝謝。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11511

    瀏覽量

    213838
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    737

    瀏覽量

    22882
  • 網(wǎng)絡(luò)編程
    +關(guān)注

    關(guān)注

    0

    文章

    72

    瀏覽量

    10631
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    常見(jiàn)的shell命令網(wǎng)絡(luò)相關(guān)命令

    192.168.0.232。IP地址的一般格式為:類別+網(wǎng)絡(luò)標(biāo)號(hào)+主機(jī)標(biāo)識(shí)。其中類別用來(lái)區(qū)分IP地址的類型,
    發(fā)表于 08-20 09:50

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

    :? NanPi NEO已成功運(yùn)行UbuntuCore系統(tǒng),并且保證NEO能聯(lián)網(wǎng)。1).打開(kāi)終端,輸入以下命令,即可查看NanoPi NEO 的IP 地址:#ifconfig eth0
    發(fā)表于 05-06 13:50

    Linux如何配置IP地址

    ifconfig命令:查看與配置網(wǎng)絡(luò)狀態(tài)的命令// 查看當(dāng)前計(jì)算機(jī)所有網(wǎng)卡的配置信息#ifconfig// 查看某網(wǎng)卡的配置信息,如eth0
    發(fā)表于 07-15 07:25

    ifconfig改變IP地址重啟后變成默認(rèn)地址是為什么?

    [td]A40i開(kāi)發(fā)板,通過(guò)ifconfig改變的ip地址,重啟后就變成auto_config_network默認(rèn)的ip
    發(fā)表于 01-13 06:31

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

    P地址IP協(xié)議提供的一種統(tǒng)一的地址格式,互聯(lián)網(wǎng)上的每一個(gè)網(wǎng)絡(luò)和每一臺(tái)電腦都有一個(gè)邏輯地址,說(shuō)的通俗一點(diǎn)
    發(fā)表于 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類似,但前者功能更強(qiáng)大,并旨在取代后者。使用ip命令,只需一個(gè)命令
    的頭像 發(fā)表于 02-02 16:07 ?3388次閱讀
    linux的<b class='flag-5'>ip</b><b class='flag-5'>命令</b>旨在取代<b class='flag-5'>ifconfig</b>

    網(wǎng)絡(luò)通信技術(shù):IP地址和MAC地址的差異

    了解完網(wǎng)絡(luò)協(xié)議,我們會(huì)發(fā)現(xiàn),網(wǎng)絡(luò)通信的五層模型里,有兩個(gè)很重要的概念:IP 地址和 MAC 地址。 那么
    的頭像 發(fā)表于 10-22 15:12 ?5219次閱讀
    <b class='flag-5'>網(wǎng)絡(luò)</b>通信技術(shù):<b class='flag-5'>IP</b><b class='flag-5'>地址</b>和MAC<b class='flag-5'>地址</b>的差異

    linux系統(tǒng)查看ip地址命令

    在Linux系統(tǒng),可以使用ifconfig命令來(lái)查看IP地址。ifconfig
    的頭像 發(fā)表于 11-08 15:09 ?3818次閱讀

    ubuntu系統(tǒng)ip地址配置

    在Ubuntu系統(tǒng)配置IP地址,可以采用兩種方式: 通過(guò)命令直接配置。打開(kāi)終端,輸入以下命令: sudo
    的頭像 發(fā)表于 11-13 17:01 ?1.4w次閱讀

    linux查看物理接口的命令

    顯示和配置網(wǎng)絡(luò)接口。它可以顯示當(dāng)前系統(tǒng)上的所有網(wǎng)絡(luò)接口及其配置信息。以下是ifconfig命令的用法和輸出示例: ifconfig -a 這
    的頭像 發(fā)表于 11-16 16:48 ?1901次閱讀

    CentOS7系統(tǒng)網(wǎng)絡(luò)配置命令

    們來(lái)配置網(wǎng)絡(luò)接口、IP地址、網(wǎng)關(guān)、DNS服務(wù)器等。 查看網(wǎng)絡(luò)接口(ifconfig命令):
    的頭像 發(fā)表于 11-17 11:07 ?5355次閱讀

    ifconfig配置靜態(tài)ip命令

    ifconfig命令用于配置和管理網(wǎng)絡(luò)接口,包括接口的IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)、以及其他網(wǎng)絡(luò)配置
    的頭像 發(fā)表于 11-27 14:31 ?5792次閱讀

    linux更改ip步驟命令

    inux是一種廣泛應(yīng)用于服務(wù)器和嵌入式設(shè)備的操作系統(tǒng),通過(guò)更改IP地址,可以對(duì)網(wǎng)絡(luò)進(jìn)行重新配置和優(yōu)化,以滿足不同的需求。在Linux,可以使用不同的
    的頭像 發(fā)表于 11-27 14:38 ?2168次閱讀

    linux系統(tǒng)修改ip命令

    Linux系統(tǒng)修改IP命令是掌握Linux網(wǎng)絡(luò)管理的基礎(chǔ)之一。在Linux操作系統(tǒng),我們可以使用命令行工具來(lái)實(shí)現(xiàn)對(duì)
    的頭像 發(fā)表于 11-27 15:17 ?2524次閱讀

    Linux ip命令常用操作

    Linux?ip命令常用操作 在Linux系統(tǒng)ip命令是用于管理網(wǎng)絡(luò)接口和路由的強(qiáng)大工具。相
    的頭像 發(fā)表于 02-19 10:23 ?684次閱讀