1. 程式人生 > >通過網絡卡名字獲取ip

通過網絡卡名字獲取ip

#include <signal.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <net/if.h>
#include <malloc.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <arpa/inet.h>
const char* getIPByIfName(const char*ifName)
{
    int s;
    struct ifreq ifr;
    static const char* none_ip="0.0.0.0";
    if(NULL==ifName)
        return none_ip;
    s=::socket(AF_INET,SOCK_DGRAM,0);
    if(-1==s)
        return none_ip;
    bzero(ifr.ifr_name,sizeof(ifr.ifr_name));
    strncpy(ifr.ifr_name,ifName,sizeof(ifr.ifr_name)-1);
    if(-1==ioctl(s,SIOCGIFADDR,&ifr))
    {
        TEMP_FAILURE_RETRY(::close(s));
        return none_ip;
    }
    TEMP_FAILURE_RETRY(::close(s));
    return inet_ntoa(((struct sockaddr_in*)&ifr.ifr_addr)->sin_addr);
}

int main()
{
    printf("%s\n", getIPByIfName("eth0"));
    return 0;
}

相關推薦

通過名字獲取ip

#include <signal.h> #include <unistd.h> #include <errno.h> #include <fcntl.h> #include <stdio.h> #include &

Linux 重新獲取IP

1.所有網絡卡驅動重新載入 service network restart 2.對單一網絡卡進行操作 ifconfig -a 獲取所有網絡卡資訊,可以看到所有網絡卡的名字 if

unix網路程式設計之根據主機名(hostname)或獲取IP地址(三種方法)

#include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <netinet/

C++ 中通過GetAdaptersInfo獲取配置和Ip地址資訊

#include <WinSock2.h> #include <Iphlpapi.h> #include <iostream> using namespace std; #pragma comment(lib,"Iphlpapi.lib") //需要新增Iphlpapi

c# 多 由【網路介面卡名】獲取資訊,IP

c# 多網絡卡 由【網路介面卡名】獲取網絡卡資訊,IP 多網絡卡電腦中,網路介面卡的名字 多樣化! 專案中需要,根據網路介面卡 名字 獲取 單個網絡卡的IP: using System.Net.NetworkInformation;

獲取指定對應的IP地址

1 #include <stdio.h> 2 #include <string.h> 3 #include <sys/socket.h> 4 #include <sys/types.h> 5 #include <sys/ioctl.h>

C/C++:Windows程式設計—程式碼獲取本地所有資訊(描述,IP地址,子掩碼,MAC地址)

先看效果 看程式碼 使用 GetAdaptersInfo 函式獲取網絡卡的所有資訊。 MSDN函式說明 https://docs.microsoft.com/en-us/windows/desktop/api/iphlpapi/nf-iphlpapi-getadapters

golang 獲取主機對應的ip

import "net" func Ips() (map[string]string, error) { ips := make(map[string]string) interfaces, err := net.Interfaces() if err != nil {

Linux命令之一句獲取名字

命令:     注意: 如需複製請使用劃詞後ctrl+c複製,右邊欄的複製鍵內容編碼會令到shell解析不到的現象 cat /proc/net/dev | awk '{i++; if(i>2){print 

API函式GetAdaptersAddresses獲取資訊MAC &IP &描述資訊

一 , 兩個函式 The GetAdaptersInfo function retrieves adapter information for the local computer The GetAdaptersAddresses function retrieves t

c++獲取本機資訊(IP,MAC,閘道器,子掩碼)

int getIP_Mac_GateMac(int adapter, char** ip, int mac[6], int gateMac[6]) //adapter:選擇的網絡卡序號 {//PIP_ADAPTER_INFO結構體指標儲存本機網絡卡資訊PIP_ADAPT

情況下通過路由表規則指定訪問特定ip

今天,同事阿峰外出駐點,而我在公司辦公,他想像以往一樣用teamviewer控制我的電腦去除錯公司的伺服器,我說沒問題。 然而,

026.1 編程 獲取IP地址

取ip地址 osi host 地址 p地址 eth .get span res 前面提及的:OSI,TCP-IP,IP地址,端口,協議概念我都清楚,所以我直接跳過前面,來到使用這裏。 //獲取本機IP InetAddress ip = InetAddress.getL

linux 修改eth0的ip地址

1:臨時修改: 1.1:修改IP地址 ifconfig eth0 192.168.100.100 1.2:修改閘道器地址 route add default gw 192.168.100.1 dev eth0 1.3:修改DNS echo “nameserver 8.8.

修改名字為eth0

網絡卡改eth0 先移動需要更改的網絡卡到指定網絡卡名比如 mv ifcfg-xxx ifcfg-eth0 注意 對應移動以後 裡面的配置檔案也要更改 刪除70檔案 rm -f /etc/udev/rules.d/70-persistent-net.rules 找到核心檔案 對應選項 在

Ubuntu配置設定/靜態ip

轉自這裡   第一步,Linux下檢視IP 我這裡是Ubuntu 16.04,這裡有2項,下面一項是lo(本地環回)可以不管,上面一項才是需要配置的。注意這裡我的虛擬網絡卡是ens33,待會兒修改的也是ens33,網上很多配置教程他們的Linux系統的網絡卡名字並不是en

linux ubuntu 配置---固定IP

需要修改/etc/network/interfaces和/etc/resolvconf/resolv.conf.d/base兩個檔案。 1) /etc/network/interfaces檔案: 首先,一個基本的配置大概是下面這個樣子: 1 auto lo 

Linux 系統銳捷有線認證多個IP被迫下線

問題描述 檢視獲取到的IP顯示,確實是有兩個IP ip 指令系統自帶,但是ifconfig需要第三方安裝 解決方法 刪除有線網絡卡的第一個IP即可 注意,需要許可權,而且刪除第一個IP,刪除第二個還是會一會掉線 但是:還

Linux 下單配置多ip

我們在使用Linux系統的時候會遇到單網絡卡配置多個ip地址的問題,Linux下邊如果沒有圖形介面,配置還真的不太方便。文字控制檯下面有netconfig,還有ifconfig工具,netconfig圖形化的稍微方便些,但是沒有文件,配置一個ip還能應付,但是如果配置多個IP

SpringCloud 解決虛擬機器導致的IP不可呼叫

當我們的電腦安裝了虛擬機器時,我們將服務註冊到 Eureka 註冊中心時,可能會發現註冊的IP是虛擬機器網絡卡的IP,此時其它伺服器的請求無法請求到該IP地址 解決方法 1. 禁用虛擬網絡卡 控制面板 → 網路和共享中心 → 更改介面卡設定 禁用掉所有虛擬機器的網路 2.忽