linux下利用ioctl函式與struct ifreq結構體可以獲取本地的ip位址等資訊。
ioctl函式原型:int ioctl( int fd, int request, .../* void *arg */ );
第二個引數為相關的動作。
獲取本地ip的**如下(同理可獲得其他的介面資訊)
1 #include2 #include//for inet_ntoa , struct sockaddr_in3 #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 }
用ioctl獲得本地ip位址
用ioctl獲得本地ip位址時要用到兩個結構體ifconf和ifreq,它們對於大多數人 來說都是比較陌生的,這裡給大家一種比較簡單的理解方法,當然只一種幫助 理解的方法,在描述中可能會有一些地方與真實定義有所出入,僅供參考.首先先認識一下ifconf和ifreq ifconf通常是用來儲存所有介面...
用ioctl獲得本地ip位址
用ioctl獲得本地ip位址時要用到兩個結構體ifconf和ifreq,它們對於大多數人 來說都是比較陌生的,這裡給大家一種比較簡單的理解方法,當然只一種幫助 理解的方法,在描述中可能會有一些地方與真實定義有所出入,僅供參考.首先先認識一下ifconf和ifreq ifconf通常是用來儲存所有介面...
用ioctl獲得本地ip位址
用ioctl獲得本地ip位址時要用到兩個結構體ifconf和ifreq,它們對於大多數人 來說都是比較陌生的,這裡給大家一種比較簡單的理解方法,當然只一種幫助 理解的方法,在描述中可能會有一些地方與真實定義有所出入,僅供參考.首先先認識一下ifconf和ifreq ifconf通常是用來儲存所有介面...