linux 下獲得本機IP位址途徑

2021-06-14 06:47:24 字數 947 閱讀 1720

途徑1:通過gethostname和gethostbyname獲得

前提是在/etc/hosts檔案中加入本機名稱 和 本機ip位址,例如:

arm       192.168.0.11

通過gethostname得到本機名稱arm,將arm傳到gethostbyname中會得到乙個指向struct hostent 結構的指標,這個結構中包涵ip位址等有關資訊.

途徑2:通過ioctl獲得

通過給ioctl函式傳遞siocgifaddr引數就能直接獲得本機ip位址,返回的內容放到ioctl的第三個引數中,而第三個引數是乙個struct ifreq結構的指標.

當然在呼叫ioctl之前先要指定是想獲得哪個網路裝置的ip位址,比如eth0,lo,eth1等等...通過給struct ifreq結構裡的ifr_name成員復值.下面是示例**:

1 #include2 #include//for inet_ntoa , struct sockaddr_in

3 #include4 #include5 #include6 #include//for struct ifreq

7 #include8 int main(void)

16 strcpy(ifr.ifr_name,"eth0");

17 if(ioctl(sockfd,siocgifaddr,&ifr)<0)

21 memcpy(&sin,&ifr.ifr_addr,sizeof(sin));

22 //sin=(struct sockaddr_in)ifr.ifr_addr;

23 printf("ip is %s\n",inet_ntoa(sin.sin_addr));

24 return 0;

25 }

Linux下 獲取本機ip位址

查ip資訊可以使用ifconfig,但有時候我們需要使用指令碼語句來進行自動獲取。方法一 ifconfig a grep inet grep v 127.0.0.1 grep v inet6 awk tr d addr 當前語句可以排查出除了127.0.0.1之外的所有ip位址,但有些時候我們的虛擬...

獲得本機IP和MAC位址

用c 獲得本機ip和 mac類為管理物件的集合,上例中由檢索物件返回管理物件集合賦值給它.using system using system.collections.generic using system.text using system.net using system.management ...

使用Python獲得本機IP位址

使用撥號上網的話,一般都有乙個本地ip和乙個外網ip,使用python可以很容易的得到這兩個ip 使用gethostbyname和gethostbyname ex兩個函式可以實現 import socket localip socket.gethostbyname socket.gethostnam...