Chinaunix首页 | 论坛 | 博客
  • 博客访问: 208504
  • 博文数量: 82
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 18
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-28 13:26
个人简介

当做事的时候,也是在学习的时候!

文章分类

全部博文(82)

文章存档

2016年(9)

2015年(55)

2014年(7)

2013年(10)

2012年(1)

我的朋友

分类: C/C++

2015-09-25 14:23:23

原文地址:获取本地网关ip 作者:txgc_wm

获取本地网关ip的c源码:
  1. int getWanGateway(char *gateway)
  2. {
  3.     char buff[256];
  4.     int nl = 0;
  5.     struct in_addr dest;
  6.     struct in_addr gw;
  7.     int flgs, ref, use, metric;
  8.     unsigned long int d, g, m;
  9.     int find_default_flag = 0;
  10.     char sgw[16];

  11.     FILE *fp = fopen("/proc/net/route", "r");

  12.     while (fgets(buff, sizeof (buff), fp) != NULL)
  13.     {
  14.         if (nl)
  15.         {
  16.             int ifl = 0;
  17.             while (buff[ifl] != ' ' && buff[ifl] != '\t' && buff[ifl] != '\0')
  18.                 ifl++;
  19.             buff[ifl] = 0; /* interface */
  20.             if (sscanf(buff + ifl + 1, "%lx%lx%X%d%d%d%lx",
  21.                     &d, &g, &flgs, &ref, &use, &metric, &m) != 7)
  22.             {
  23.                 fclose(fp);
  24.                 return -1;
  25.             }

  26.             if (flgs & RTF_UP)
  27.             {
  28.                 dest.s_addr = d;
  29.                 gw.s_addr = g;
  30.                 strcpy(sgw, (gw.s_addr == 0 ? "" : (char *) inet_ntoa(gw)));

  31.                 if (dest.s_addr == 0)
  32.                 {
  33.                     find_default_flag = 1;
  34.                     memcpy(gateway, sgw, strlen(sgw));
  35.                     printf("gateway:%s\n", gateway);
  36.                     break;
  37.                 }
  38.             }
  39.         }
  40.         nl++;
  41.     }
  42.     fclose(fp);

  43.     if (find_default_flag == 1)
  44.         return 0;
  45.     else
  46.         return -1;
  47. }

阅读(1448) | 评论(0) | 转发(0) |
0

上一篇:vim格式对齐命令

下一篇:qt鼠标事件总结

给主人留下些什么吧!~~