linux获取网络信息函数
获取IP地址
int sys_getIP(char *ip_addr)
{
char ip_sys[] = {"ifconfig eth0 | grep inet | cut -d: -f2 | cut -d' ' -f1 > ipaddr.txt"};
FILE *ip_fp = NULL;
int error_sys;
if((error_sys = system(ip_sys)) !=)
{
fprintf(stderr, "[get_eth] ip_sys : 0x%x\n", error_sys);
}
if ((ip_fp=fopen("ipaddr.txt", "r")) != NULL)
{
fgets(ip_addr, , ip_fp);
}
else
{
perror ("fread");
return -;
}
fclose (ip_fp);
unlink("ipaddr.txt");
return ;
}
获取子网掩码
int sys_getMask(char *mask_addr)
{
char ip_sys[] = {"ifconfig eth0 | grep Mask | cut -dk -f2 | cut -d: -f2 > /tmp/ipaddr.txt"};
FILE *ip_fp = NULL;
int error_sys;
if((error_sys = system(ip_sys)) !=)
{
fprintf(stderr, "[get_eth] ip_sys : 0x%x\n", error_sys);
}
if ((ip_fp=fopen("/tmp/ipaddr.txt", "r")) != NULL)
{
fgets(mask_addr, , ip_fp);
}
else
{
perror ("fread");
return -;
}
fclose (ip_fp);
unlink("/tmp/ipaddr.txt");
return ; }
获取网关
int sys_getGW(char *gw_addr)
{
FILE *fp;
char buf[];
char cmd[];
char *tmp;
strcpy(cmd, "ip route");
fp = popen(cmd, "r");
if(NULL == fp)
{
perror("popen error");
return "";
}
while(fgets(buf, sizeof(buf), fp) != NULL) //stroe output one line!!
{
tmp =buf;
while(*tmp && isspace(*tmp))
++ tmp;
if(strncmp(tmp, "default", strlen("default")) == )
break;
}
sscanf(buf,"%*s%*s%s", gw_addr);
printf("default gateway:%s\n", gw_addr);
pclose(fp);
return ;
}
获取mac地址
int sys_getHW(char *hw_addr)
{
char ip_sys[] = {"ifconfig | sed -e '/.*HWaddr /!d;s///;s/ .*//' > hwaddr.txt"};
FILE *ip_fp = NULL;
int error_sys;
if((error_sys = system(ip_sys)) !=)
{
fprintf(stderr, "[get_eth] ip_sys : 0x%x\n", error_sys);
}
if ((ip_fp=fopen("hwaddr.txt", "r")) != NULL)
{
fgets(hw_addr, , ip_fp);
}
else
{
perror ("fread");
return -;
}
fclose (ip_fp);
unlink("hwaddr.txt");
return ;
}
linux获取网络信息函数的更多相关文章
- linux 获取网络状态信息(Rtnetlink)
一.Rtnetlink Rtnetlink 允许对内核路由表进行读和更改,它用于内核与各个子系统之间(路由子系统.IP地址.链接参数等)的通信, 用户空间可以通过NET_LINK_ROUTER soc ...
- Linux内核--网络栈实现分析(六)--应用层获取数据包(上)
本文分析基于内核Linux 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7541907 更多请看专栏,地址http: ...
- 封装获取网络信息Linux—API类
封装获取网络信息Linux—API类 封装好的库: #ifndef NETINFORMATION_H #define NETINFORMATION_H #include <netdb.h> ...
- Linux网络编程之"获取网络天气信息"
需求分析: 1.需要Linux c 网络编程基础, 2.需要了解 http 协议 3.需要天气信息相关api(可以从阿里云上购买,很便宜的!) 4.需要cJSON解析库(因为获取到的天气信息一般是用c ...
- QT在linux下获取网络类型
开发中遇到这样一个需求,需要判断当前网络的类型(wifi或者4G或者网线),在这里给大家一块分享下: 1.这里有一个linux指令:nmcli(大家自行百度即可) 2.nmcli device sta ...
- Qt linux获取cpu使用率、内存、网络收发速度、磁盘读写速度、磁盘剩余空间等
#include "resource_minitor.h" #include "sys/statfs.h" resource_minitor::resource ...
- Linux 获取本机IP、MAC地址用法大全
getifaddrs()和struct ifaddrs的使用,获取本机IP ifaddrs结构体定义如下: struct ifaddrs { struct ifaddrs *ifa_next; /* ...
- linux虚拟机网络连接模式 bridged, host-only, NAT
最近安装了fedora9.0,却一直不能连接到外网,我用的是3G无线网卡上网的,起初以为是linux不支持3G无线方式的,可后来装了虚拟机ubuntu却可以上网,在后来用有ADSL网络连接的电脑安装f ...
- Linux C网络编程学习笔记
Linux C网络编程总结报告 一.Linux C 网络编程知识介绍: 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端:(client) 在网络程序中, ...
随机推荐
- 【原创】大叔问题定位分享(2)spark任务一定几率报错java.lang.NoSuchFieldError: HIVE_MOVE_FILES_THREAD_COUNT
最近用yarn cluster方式提交spark任务时,有时会报错,报错几率是40%,报错如下: 18/03/15 21:50:36 116 ERROR ApplicationMaster91: Us ...
- C++入门篇四
常量引用:形参不能修改,节省开辟内存空间的开销 用一级指针代替二级指针常量引用,使用场景,修饰形参为只读const int a=10会分配内存如果使用引用,在前面加了一个const的话,那么就不可以修 ...
- 将DataTable转换为List<T>对象遇到问题:类型“System.Int64”的对象无法转换为类型“System.Int32”。
可以利用反射将DataTable转换为List<T>对象:原始链接http://www.jb51.net/article/67386.htm 但是该方法在DataTable里某个字段类型是 ...
- java+selenium实现web自动化
1.环境搭建: eclipse4.8 + java1.8 + selenium-3.14 基本都是使用最新版 (1) eclipse4.5下载:http://www.eclipse.org/downl ...
- 主席树入门——询问区间第k大pos2104,询问区间<=k的元素个数hdu4417
poj2104找了个板子..,但是各种IO还可以进行优化 /* 找区间[l,r]第k大的数 */ #include<iostream> #include<cstring> #i ...
- oracle 列行转换
1.列转换 1:每个字母转成一行 SELECT SUBSTR(A.COLUMN1, LEV, 1) COLUMN1FROM ( SELECT 'AABDC' COLUMN1 FROM DUA ...
- Postgresql查询出换行符和回车符:
1.有时候,业务因为回车和换行出现的错误,第一步,首先要查询出回车符和换行符那一条数据: -- 使用chr()和chr()进行查询 SELECT * )||)||'%'; -- 其实查询chr()和c ...
- C#代码执行耗时计算,此处是监测的mvc控制器方法
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u011511086/article/details/78710980using System;usi ...
- Class--2019-04-14
获取class对象,有三种方法: 1.通过类名.class直接访问 Class c = Integer.class; 2.通过Class.forName(类名)函数获取 Class c = Class ...
- CodeForces - 1013C C - Photo of The Sky 贪心
题目链接: https://vjudge.net/problem/1735276/origin 题目大意与思路: 题目的基本意思就是求一个矩形的最小面积. 这个可以用最大最小值, 将他们分为X和Y组. ...