免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 18655 | 回复: 9
打印 上一主题 下一主题

[C] 用c语言得到linux本机的IP地址 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-03-20 10:22 |只看该作者 |倒序浏览
用下面的函数可以直接找到你的ip地址

  1. #include <stdio.h>;
  2. #include <sys/types.h>;
  3. #include <sys/socket.h>;
  4. #include <sys/ioctl.h>;
  5. #include <netinet/in.h>;
  6. #include <net/if.h>;
  7. #include <net/if_arp.h>;
  8. #include <arpa/inet.h>;
  9. #include <errno.h>;

  10. #define ETH_NAME        "eth0"

  11. int main()
  12. {
  13.         int sock;
  14.         struct sockaddr_in sin;
  15.         struct ifreq ifr;
  16.        
  17.         sock = socket(AF_INET, SOCK_DGRAM, 0);
  18.         if (sock == -1)
  19.         {
  20.                 perror("socket");
  21.                 return -1;               
  22.         }
  23.        
  24.         strncpy(ifr.ifr_name, ETH_NAME, IFNAMSIZ);
  25.         ifr.ifr_name[IFNAMSIZ - 1] = 0;
  26.        
  27.         if (ioctl(sock, SIOCGIFADDR, &ifr) < 0)
  28.         {
  29.                 perror("ioctl");
  30.                 return -1;
  31.         }

  32.         memcpy(&sin, &ifr.ifr_addr, sizeof(sin));
  33.         fprintf(stdout, "eth0: %s\n", inet_ntoa(sin.sin_addr));
  34.        
  35.         return 0;
  36. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2003-03-20 20:56 |只看该作者

用c语言得到linux本机的IP地址

SIOCGIFADDR是什么意思?
我在帮助里查不到。
谢过先。

论坛徽章:
0
3 [报告]
发表于 2003-03-21 08:46 |只看该作者

用c语言得到linux本机的IP地址

楼主的假设不成立,因为当主机是多接口时,上述程序只能返回一个IP,还是用netstat

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2003-03-21 11:49 |只看该作者

用c语言得到linux本机的IP地址

这个可以

http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=12&amp;topic=3303

论坛徽章:
0
5 [报告]
发表于 2003-09-23 13:11 |只看该作者

用c语言得到linux本机的IP地址

谢谢!
   
不过我还是学生,不是那个CRC。

您懂的真多!好羡慕!有空教教我好吗?(妄想)

哈,谢谢!
虽然我仍然迷茫,
但是
可幸的是
有人和我同在
荒漠(我的)

走!


非常感激天!

论坛徽章:
0
6 [报告]
发表于 2007-07-10 10:45 |只看该作者
程序倒是好用,但是有几个小问题要改正啊
1.include后面不要加;
2.使用了'strncpy','memcpy'要在头部多加一条#include <string.h>

论坛徽章:
0
7 [报告]
发表于 2007-07-10 11:10 |只看该作者
原帖由 gadfly 于 2003-3-21 11:49 发表
这个可以

http://www.chinaunix.net/cgi-bin ... m=12&topic=3303

地址不可用了吧

论坛徽章:
0
8 [报告]
发表于 2007-07-10 11:26 |只看该作者
比较经典的一个帖子,枚举网络接口,在每个接口中打印IP地址列表。
稍微修改下可以做成windows,Linux, solaris,freebsd通用的一个函数。
而且加上MAC地址的获取。

论坛徽章:
0
9 [报告]
发表于 2013-01-08 16:26 |只看该作者
加那么多无用的头文件不觉的累赘吗?

论坛徽章:
0
10 [报告]
发表于 2013-04-16 18:14 |只看该作者
头文件后边多加“;”号了 ,还有需要加入<string.h>
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP