当前位置:  技术问答>linux和unix

如何用C程序获取和设置本地IP、网关、及掩码。

    来源: 互联网  发布时间:2015-12-01

    本文导语:  要使用C语言获取网卡信息,及对网卡信息进行设置,包括IP地址,网关、子网掩码,用事么方法比较方便一点。 | 你可以strace route -n就知道如何做了 我的结果是这样的 open("/proc/net/route", O_R...

要使用C语言获取网卡信息,及对网卡信息进行设置,包括IP地址,网关、子网掩码,用事么方法比较方便一点。

|
你可以strace route -n就知道如何做了

我的结果是这样的
open("/proc/net/route", O_RDONLY)       = 3
//.....

说明route -n 是读取的/proc/net/route这个文件来得到网关的
/proc/net/route文件具体的格式可以man proc来看

至于设置gateway就稍微复杂些,

struct rtentry rt;
ioctl(sockfd, SIOCADDRT, &rt)

其中struct rtentry在/usr/include/linux/route.h定义

|

unsigned long do_ioctl_get_ipaddress(char *dev)
{
                struct ifreq ifr;
                int fd;
                int err;
                unsigned long ip;
                unsigned long myip;
                struct in_addr tmp_addr;
                int i=0;
        strcpy(ifr.ifr_name, dev);
        fd = socket(AF_INET, SOCK_DGRAM, 0);
        err = ioctl(fd, SIOCGIFADDR, &ifr);
        if (err) {
                perror("ioctl");
                return 0;
        }
        close(fd);
        memcpy(&ip,ifr.ifr_addr.sa_data + 2,4);
        myip = ip;
        tmp_addr.s_addr=myip;
        return myip;
}

    
 
 

您可能感兴趣的文章:

  • 请教:如何在程序中获取本地网卡的默认网关?
  • 如何在程序内获取程序所在的目录?
  • Solaris 9中的C程序如何获取执行程序所在的路径?
  • QT的应用程序中如何获取程序执行的路径?
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户
  • C# 获取程序集版本、文件版本
  • 如何获取应用程序的当前路径(Linux)
  • linux如何获取当前程序ID并用shell脚本停止进程
  • linux程序获取显示器个数
  • 如何获取运行本程序的用户的默认工作路径??
  • 如何通过gtk的函数在程序里获取显示器的分辨率????????
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户 100分相赠
  • C# 获取(非)Web程序根目录的可用方法
  • 请教SHELL语句如何获取程序的安装路径?
  • C程序如何获取系统剩余内存
  • 怎样获取applet程序的地址?
  • 在unix下,如何用C程序获取当前登陆的tty号
  • [求助]如何获取一个程序所使用的系统调用和参数?
  • .NET中获取程序根目录的常用方法介绍
  • 请问如何在C程序中获取linux系统的磁盘剩余空间
  • 在执行java程序时,如何获取当前.class文件的路径
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Ubuntu程序开机自动启动设置(服务和自动运行配置文件)的几种方法
  • 我的一个应用程序设置了MetalLookAndFeel,但是字体很难看,如何能够统一设置成我要的字体?
  • Linux下c/c++开发之程序崩溃(Segment fault)时内核转储文件(core dump)生成设置方法
  • 请问如何设置驱动程序和应用程序的启动顺序和优先级呢?
  • 驱动程序找不到Class.forName("oracle.jdbc.driver.OracleDriver");,在程序中还要设置什么?
  • 要运行JDBC的程序,该如何设置?
  • 设置程序显示行数问题
  • unix如何设置让一个程序自动启动
  • 在Linux应用程序模式下如何设置中断!!!
  • 如何设置文件默认的程序打开?
  • 怎样设置应用程序随linux启动而启动!
  • 请问如何设置才能在linux启动时自动加载其他应用程序?
  • 请碰到过的哥们回应。Java GUI程序中如何设置显示字体呢?
  • 如何设置java应用程序的风格,如java风格,和windows风格!
  • 在jsp页面中怎样设置断点,调试程序?
  • Solaris系统下,使用gcc编译程序,请问采用1字节对齐应该怎样设置
  • Linux内否设置程序最大内存使用量
  • 哪位高手可以提供使用C/C++编CGI程序中,使用和设置Cookie的例子。为谢!!!
  • linux下如何单步或设置断点调试驱动或应用程序
  • ubuntu开机自动运行与桌面设置有关的程序
  • 数据库 iis7站长之家
  • 重装服务器后IIS网站错误(应用程序中的服务器错误)
  • 为什么我在java程序里启动的一个程序在java程序关闭后,该程序的所有进程都关掉了
  • windows server2008上PowerBuilder程序系统错误解决方法
  • Linux 编程怎么样在程序开启一个程序,和关闭一个程序?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • 请问从一个java程序中如何调用另一java程序,并控制可以其状态(最小化、最大化、结束程序),还有怎样知道那个被调用的程序结束。
  • 程序员的八种级别,你属于哪一级?
  • Linux下的程序是在内存中运行的吗?为什么在程序运行的时候可以删除程序文件?
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 我的程序是用c写的gtk+程序,有个函数的参数要传给它图片的文件名,但是图片和原程序不在同一目录下怎么办?怎么在程序里指定文件的路径


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3