1. 程式人生 > >Linux下靠譜的獲取本機IP地址的C程式碼實現

Linux下靠譜的獲取本機IP地址的C程式碼實現

#include <stdio.h>      
#include <sys/types.h>
#include <ifaddrs.h>
#include <netinet/in.h> 
#include <string.h> 
#include <arpa/inet.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>
#include <stdlib.h>
#include <stdlib.h>
#include <time.h>
#include <sys/vfs.h>
#include <stdio.h>
#include <signal.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>


int main (int argc, const char * argv[]) 
{

    struct ifaddrs * ifAddrStruct=NULL;
    void * tmpAddrPtr=NULL;

    getifaddrs(&ifAddrStruct);

    while (ifAddrStruct!=NULL) 
	{
        if (ifAddrStruct->ifa_addr->sa_family==AF_INET)
		{   // check it is IP4
            // is a valid IP4 Address
            tmpAddrPtr = &((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr;
            char addressBuffer[INET_ADDRSTRLEN];
            inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, INET_ADDRSTRLEN);
            printf("%s IPV4 Address %s\n", ifAddrStruct->ifa_name, addressBuffer); 
        }
		else if (ifAddrStruct->ifa_addr->sa_family==AF_INET6)
		{   // check it is IP6
            // is a valid IP6 Address
            tmpAddrPtr=&((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr;
            char addressBuffer[INET6_ADDRSTRLEN];
            inet_ntop(AF_INET6, tmpAddrPtr, addressBuffer, INET6_ADDRSTRLEN);
            printf("%s IPV6 Address %s\n", ifAddrStruct->ifa_name, addressBuffer); 
        } 
        ifAddrStruct = ifAddrStruct->ifa_next;
    }
    return 0;
}

編譯

gcc -g -O0 -o showip main.c   

執行

./showip

顯示如下

[[email protected] ~]# ./showip
lo IPV4 Address 127.0.0.1
eth0 IPV4 Address 192.168.1.103
lo IPV6 Address ::
eth0 IPV6 Address 0:0:fe80::20c:29ff

相關推薦

Linux獲取IPC程式碼

這裡寫程式碼片http://blog.csdn.net/langeldep/article/details/8306603 正在做一個網路程式設計的任務,多臺裝置向伺服器傳送圖片,傳送圖片的時候同時告訴伺服器自己的IP。伺服器根據IP來區分不同的裝置,將圖片存

linux使用ioctl() 獲取mac地址ip地址等等

       在linux下,我們知道可以通過ifconfig獲取mac地址和ip地址等相關資訊,但是如果要使用gcc程式實現的話,我們就需要使用到系統所提供的一個函式ioctl(),iotec函式是對裝置的i/o通道進行管理的函式。由於這個函式用途比較多,如果要學習可以參

Linux獲取IP地址C程式碼實現

#include <stdio.h> #include <sys/types.h> #include <ifaddrs.h> #include <netinet/in.h> #include <string

LinuxC語言獲取IP地址

#include <sys/ioctl.h> #include <net/if.h> #include <arpa/inet.h>   char* GetLocalIp() { int MA

LinuxJava獲取IP地址

在Linux下用InetAddress.getLocalHost()方法獲取本機IP地址, 得到的結果總是:127.0.0.1。 原來這個是etc/hosts檔案中的配置,並非網絡卡的IP地址。 後來多方尋訪,終於得下以下程式碼, 執行後在控制檯輸出IP與MAC地址。import java.net.*;imp

LinuxC程式設計實現---獲取IP地址

在LINUX下,如果需要獲取本機的IP地址,需要用到以下一個結構體,該結構體在/usr/include/net/if.h檔案中 struct ifreq { # define IFHWADDRLEN 6 # define IFNAMSIZ IF_

windowsC++獲取IP地址

ali 返回 轉換成 data info AC ctrl nag != BSTR CamUtilsCtrl::GET_TERM_IP(void){ AFX_MANAGE_STATE(AfxGetStaticModuleState()); CString strResult

linux c 獲取ip地址

#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <

linux程式設計獲取IP地址的三種方法

                這是一項不太清晰而且沒有多大意義的工作。一個原因是網路地址的設定非常靈活而且都是允許使用者進行個性

linux獲取IP地址

 ifaddrs結構體定義如下: C程式碼   struct ifaddrs    {        struct ifaddrs  *ifa_next;    /* Next item in list */        char            *ifa_name;    /* Nam

獲取IP地址的小腳

ash class p地址 nbsp 地址 int done 獲取本機 onf 獲取本機私網地址(1個) 1 #!/bin/bash 2 # Author : standby 3 # Date : 2017-05-18 4 # D

unity 獲取ip地址

ipa mil work get hostname [] 本機 取ip gethost IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName()); //Dns.GetHostName()獲取本機名Dns.GetH

獲取IP地址

down pos -m 兩個 div mar inter 獲取本機ip地址 work 問題描述 一臺電腦有IPV4地址和IPV6地址,目前使用的基本是IPV4地址, 有些情況還有多個網卡,有線的、無線的、還有vmare虛擬的兩個網卡。 獲取所有的IP地址 //獲取本機IP

shell中獲取ip地址

align 本機ip www. .cn logs res font 地址 獲取本機ip 方法一: /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk ‘{print $2}‘|tr -d "addr

C++ 獲取ip地址

C++/MFC  獲取本地計算機的所有IP string m_LocalIP1;//IP地址臨時變數 string m_LocalIP2; LPCSTR psz; //獲得本地計算機名 char PCnameBuffer[128]; string m_PCname; //初始化

C#】獲取IP地址

前言    最近開始做牛腩新聞釋出系統,剛接觸網頁開發,因為沒有基礎,做起來比較困難,當然BUG就多了。不過“牛”老師水平很高,講的很清楚,出現BUG分分鐘就可以搞定。在做評論新聞這一功能時,需要獲取本機的IP地址。這時就出現BUG了。 BUG 根據“牛”老師的方法: IP

python 獲取IP地址,檢測埠是否被佔用

import socket def get_host_ip(): """ get host ip address 獲取本機IP地址 :return: """ s = socket.socket(socket.

批處理--工作當中獲取ip地址然後執行一個迴圈啟動指令碼

goto :main rem +++++++獲取本機ip++++++++++++++++++++++++++++++++++++   :get_local_ip   rem 注意 不要照搬某些人的文章,如果你把函式寫成setlocal   dosomething endlocal 這種結構,那麼在這段程式碼中

NSIS獲取IP地址寫入配置檔案

安裝一個應用程式的時候需要獲取當前的網絡卡IP地址,即伺服器IP地址,同時寫入到配置檔案。NSIS提供了獲取IP地址的外掛,IP-plugin,詳情請看:http://nsis.sourceforge.net/IP_plug-in 外掛安裝很簡單,只需要下載dll檔案,拷貝到

C語言獲取IP地址

char* getIpAddress(){ WSADATA wsaData; char name[255];//定義用於存放獲得的主機名的變數 char *ip;//定義IP地址變數 PHOSTENT hostinfo;