根据网卡(eth0, eth1)获得对应的IP地址
2014-01-16 17:05
429 查看
核心是利用 ioctl函数的SIOCGIFADDR 来获取
int get_interface_addr(char *eth, char *ipaddr) { int sock_fd; struct sockaddr_in my_addr; struct ifreq ifr; if ((sock_fd = socket(PF_INET, SOCK_DGRAM, 0)) == -1) { perror("socket"); return RET_FAILED; } strncpy(ifr.ifr_name, eth, IF_NAMESIZE); ifr.ifr_name[IFNAMSIZ-1]='/0'; if (ioctl(sock_fd, SIOCGIFADDR, &ifr) < 0) { DBGPRN(":No Such Device %s/n",eth); return RET_FAILED; } memcpy(&my_addr, &ifr.ifr_addr, sizeof(my_addr)); strcpy(ipaddr, inet_ntoa(my_addr.sin_addr)); close(sock_fd); return RET_SUCCESS; }
相关文章推荐
- 入门dos,哈哈,发一个定时关机
- CSS3 Box-sizing
- 域控制引发文件服务器无法访问
- getContentLength()为-1 解决方法
- 网站建设之选择合适的主机
- NET获取计算机相关信息
- java乱码问题
- 设置本地子域名
- asp.net返回值当文件下载问题
- 各种传递参数和返回(ajax等)
- HTML5的桌面通知
- Uboot移植之<一>------S3C2440平台搭建(支持Norflash和nand flash)
- 『C/C++』整型和字符串相互转换
- cocos2d-x 内存管理简单谈
- C++中vector的详细说明
- CSDN的账号又忘了
- VisualNet地税管道资源管理系统
- JQUERY1.9学习笔记 之基本过滤器(九) 小于选择器
- sql取出数据唯一列,无重复列
- 寒假第三天--栈和队列--传说中的数据结构