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) 在网络程序中, ...
随机推荐
- Vue项目中使用webpack配置了别名,引入的时候报错
chainWebpack(config) { config.resolve.alias .set('@', resolve('src')) .set('assets', resolve('src/as ...
- An overview of network penetration testing
1. an SQLi vulnerability will allow you to do the following query the database using select statem ...
- Java基础try-with-resource语法源码分析
众所周知,所有被打开的系统资源,比如流.文件或者Socket连接等,都需要被开发者手动关闭,否则随着程序的不断运行,资源泄露将会累积成重大的生产事故. 在Java的江湖中,存在着一种名为finally ...
- python数据类型一:字符串
Python 字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'Hello W ...
- .net Core 目录浏览权限
StartUp 类库中 ConfigureServices:方法中增加文件夹浏览服务. Configure: 添加中间件 1.app.UseStaticFiles() 2.//增加文件访问权限app. ...
- 全文搜索引擎Elasticsearch入门实践
全文搜索引擎Elasticsearch入门实践 感谢阮一峰的网络日志全文搜索引擎 Elasticsearch 入门教程 安装 首先需要依赖Java环境.Elasticsearch官网https://w ...
- 前端技术之--HTML
1.一套规则,浏览器认识的规则. 2.开发者: 学习Html规则 开发后台程序: - 写Html文件(充当模板的作用) ****** - 数据库获取数据,然后替换到html文件的指定位置(Web框架) ...
- Android 调用 .NET WebService
1.下载并导入jar工具类包 打开下载界面http://simpligility.github.io/ksoap2-android/getting-started.html ,拉倒最下 2.Copy ...
- 判断点在不在多边形范围内c#
C# 计算地图上某个坐标点的是否在多边形内 这个方法引用自群友的博客 https://www.xiaofengyu.com/?p=143 使用百度地图的时候,常常会用到判断一个点是否在一个多边形的 ...
- swift中单例类的创建
1.最经典的 class TheOneAndOnlyKraken { static let sharedInstance = TheOneAndOnlyKraken() private ...