linux如何获取本地ip?
来源:互联网 发布:linux gcc编译器下载 编辑:程序博客网 时间:2024/06/08 06:13
方法有很多种,这里介绍下使用ioctl获取本地ip的方法。
先介绍下ioctl,ioctl是设备驱动程序里对设备的I/O通道进行管理,所谓对I/O通道进行管理,就是获取或设置设备的一些特性参数。
我们可以利用ioctl获取网卡设备的IP。
具体代码实现如下:
uint32_t getMachineLocalIp(char *interface){if (NULL == interface){printf("[getMachineLocalIp]interface is null\n");return 0;}int sockfd = socket(AF_INET,SOCK_DGRAM,0);if (-1 == sockfd){printf("[getMachineLocalIp]socket fail\n");return 0;}struct ifreq ifr;strcpy(ifr.ifr_name,interface);int ioret = ioctl(sockfd,SIOCGIFADDR,&ifr);if (-1 == ioret){printf("[getMachineLocalIp] ioctl fail\n");close(sockfd);return 0;}struct sockaddr_in sin;memcpy(&sin,&(ifr.ifr_addr),sizeof(struct sockaddr_in));close(sockfd);return sin.sin_addr.s_addr;}
char *interface是网卡名字,比如eth0,eth1,,,
创建socket目的是得到网卡的一个文件描述符,最终得到的ip信息存储在ifr.ifr_addr里,它是个struct sockaddr结构。我们习惯转换为struct sockaddr_in再操作。
拓展:
如此得到的ip是十进制长整型,如果要转换成点分十进制字符串,使用inet_ntoa函数。
反过来则使用inet_addr函数。
阅读全文
0 0
- linux如何获取本地ip?
- 如何获取本地IP
- Linux 获取本地ip
- Linux编程获取本地IP
- 如何获取本地计算机的IP,子网掩码
- java编程如何获取本地ip
- NodeJS如何获取用户本地IP地址?
- VC++中如何获取本地IP地址
- linux下获取本地IP信息的
- linux 下获取本地IP地址
- linux 下获取本地IP地址
- Linux下获取本地IP地址--------getaddrinfo
- Linux下获取本地IP地址--------ioctl
- Linux下获取本地IP地址--------ioctl
- linux下获取本地IP信息
- Linux下获取本地IP地址--------getifaddrs
- Linux下获取本地IP地址--------getifaddrs
- linux ioctl 获取本地IP相关信息
- linux mkdir -p参数 与 rm -r参数
- 扩展Spring Schema样例代码 maven
- 基于dubbo的RPC测试工具的设计(原型版)
- 网页分享接口代码格式
- POJ-2104 K-th Number (主席树 不带修改区间第k大)
- linux如何获取本地ip?
- 获取豆瓣电影评分并保存到本地 遇到3个错误
- md5工具类以及注释
- Android原子操作的实现原理
- 算法提高 打水问题
- 1.CSS和文档
- 4-1 复数类的运算符重载
- 学习shell脚本之前的基础知识
- 从Python的exec()聊起