途徑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...