linux中ifi_info的英文全称,linux下里面如何获取网卡的实时网速
满意答案
nanrui8251
2018.05.28
采纳率:44% 等级:7
已帮助:409人
#include
#include "tspeed.h"
int main ()
{
struct if_speed ndev;
int ret = 0;
bzero(&ndev,sizeof(ndev));
sprintf(ndev.ifs_name,"eth0");
ndev.ifs_us = 100000;
printf("Get %s Speed",ndev.ifs_name);
#if 1
ret = get_if_speed(&ndev);
if(ret < 0)
printf("[Fail]\n");
else
printf("[OK]\n");
float ispeed ,ospeed;
while(1){
time_t *timep = malloc(sizeof(*timep));
time(timep);
char *s = ctime(timep);
ispeed = ndev.ifs_ispeed * 1.0/(ndev.ifs_us/1000 * 0.001);
ospeed = ndev.ifs_ospeed * 1.0/(ndev.ifs_us/1000 * 0.001);
#if 0
printf("%s: Up Speed: %fMB/s || Down Speed: %fMB/s\r",
ndev.ifs_name,ispeed/(1024.0*1024.0),ospeed/(1024.0*1024.0));
#endif
sleep(3);
#if 1
printf("*****************************************************\n");
printf("*****************************************\n");
printf("***************************\n");
printf("*************\n");
printf("Time is %s || Down Speed: %fKB/s\n",s,ospeed/(1024.0));
#endif
get_if_speed(&ndev);
}
#endif
return 0;
} /* ----- End of main() ----- */
----------------------------------------------------------------------------
#include "tspeed.h"
int get_if_dbytes(struct if_info* ndev)
{
assert(ndev);
struct ifaddrs *ifa_list = NULL;
struct ifaddrs *ifa = NULL;
struct if_data *ifd = NULL;
int ret = 0;
ret = getifaddrs(&ifa_list);
if(ret < 0) {
perror("Get Interface Address Fail:");
goto end;
}
for(ifa=ifa_list; ifa; ifa=ifa->ifa_next){
if(!(ifa->ifa_flags & IFF_UP) && !(ifa->ifa_flags & IFF_RUNNING))
continue;
if(ifa->ifa_data == 0)
continue;
ret = strcmp(ifa->ifa_name,ndev->ifi_name);
if(ret == 0){
ifd = (struct if_data *)ifa->ifa_data;
ndev->ifi_ibytes = ifd->ifi_ibytes;
ndev->ifi_obytes = ifd->ifi_obytes;
break;
}
}
freeifaddrs(ifa_list);
end:
return (ret ? -1 : 0);
}
int get_if_speed(struct if_speed *ndev)
{
assert(ndev);
struct if_info *p1=NULL,*p2=NULL;
p1 = (struct if_info *)malloc(sizeof(struct if_info));
p2 = (struct if_info *)malloc(sizeof(struct if_info));
bzero(p1,sizeof(struct if_info));
bzero(p2,sizeof(struct if_info));
strncpy(p1->ifi_name,ndev->ifs_name,strlen(ndev->ifs_name));
strncpy(p2->ifi_name,ndev->ifs_name,strlen(ndev->ifs_name));
int ret = 0;
ret = get_if_dbytes(p1);
if(ret < 0) goto end;
usleep(ndev->ifs_us);
ret = get_if_dbytes(p2);
if(ret < 0) goto end;
ndev->ifs_ispeed = p2->ifi_ibytes - p1->ifi_ibytes;
ndev->ifs_ospeed = p2->ifi_obytes - p1->ifi_obytes;
end:
free(p1);
free(p2);
return 0;
}
------------------------------------------
#ifndef __TSPEED_H__
#define __TSPEED_H__
#include
#include
#include
#include
#include
#include
#include /* for ifconf */
#include /* for net status mask */
#include /* for sockaddr_in */
#include
#include
/* For "open" function */
#include
#include
#include
struct if_data
{
/* generic interface information */
u_long ifi_opackets; /* packets sent on interface */
u_long ifi_ipackets; /* packets received on interface */
u_long ifi_obytes; /* total number of octets sent */
u_long ifi_ibytes; /* total number of octets received */
};
struct if_info
{
char ifi_name[16];
unsigned long ifi_ibytes;
unsigned long ifi_obytes;
};
struct if_speed
{
char ifs_name[16];
unsigned long ifs_ispeed;
unsigned long ifs_ospeed;
unsigned long ifs_us;
};
int get_if_dbytes(struct if_info *ndev);
int get_if_speed(struct if_speed *ndev);
#endif
------------------------
纯手打 代码都给你了
00分享举报
linux中ifi_info的英文全称,linux下里面如何获取网卡的实时网速相关推荐
- linux查看当前网卡网速,Linux环境编程:获取网卡的实时网速
在Windows下面,我们可以看到360或者是qq安全卫士的"安全球",上面显示实时的网速情况.那么在Linux里面如何获取网卡的实时网速?其实原理很简单,读取需要获取网速的网卡在 ...
- 【Linux】Linux基础命令及英文全称
文章目录 一.系统启动一般流程 1.1 Windows 1.2 Linux 1.2.1 Linux简单驱动程序框架 二.S3C2440内部资源 三.命令入门 3.1 终端Teminal 3.2 Lin ...
- Linux 常用命令、英文全称、中文翻译
Linux常用命令.英文全称.中文翻译 常用命令 英文全称 中文翻译 apt Advanced Packaging Tool 高级包装工具 cp Copy file 复制文件 cat Concaten ...
- centos sudo不能运行_如何在 Linux 中配置 sudo 访问权限 | Linux 中国
Linux 系统中 root 用户拥有 Linux 中全部控制权力.Linux 系统中 root 是拥有最高权力的用户,可以在系统中实施任意的行为.-- Magesh Maruthamuthu Lin ...
- linux中_Linux基础知识(Linux系统、Linux中的链表)
Linux系统简介 Linux系统的结构及特点 Linux系统的结构图如下图所示: 从上图可以看出,Linux是一个典型的宏内核(一体化内核)结构.硬件系统上面时硬件抽象层,在硬件抽象层上面时内核服务 ...
- 19. linux中权限详解,Linux权限位,读写执行权限真正含义,chmod详解
linux中权限详解,Linux权限位,读写执行权限真正含义,chmod详解 文章目录 Linux权限位 读写执行 三种权限真正含义和作用 权限对文件的作用 权限对目录的作用 示例 chmod 使用数 ...
- linux取证教程,Linux中的取证(Forensics in Linux)
Linux中的取证(Forensics in Linux) 数字调查的主要问题是通过加密或任何其他格式保护重要证据或数据. 基本示例是存储密码. 因此,有必要了解Linux操作系统在数字取证实施中的使 ...
- <Linux开发> ubuntu开发工具-Ubuntu测试网速及实时网速图
<Linux开发> ubuntu开发工具-Ubuntu测试网速及实时网速图 一.查看网线上行.下行网速 1.安装speedtest-cli工具 water@water-Tower-PC:~ ...
- Linux查看实时网速的Shell
Linux查看实时网速的shell What 这是一个可以查看Linux主机实时网速的shell脚本,它能够根据网速自动调整单位以便更好的显示网速. Linux显示实时网速的shell Why 在工作 ...
- ubuntu中显示实时网速的方法
ubuntu中显示实时网速的方法:1.打开ubuntu系统终端:2.输入"sudo add-apt-repository ppa:fossfreedom/indicator-sysmonit ...
最新文章
- 如何为人工智能建立正确的数据策略?
- IOS支付宝集成一系列问题
- GPUImage滤镜中的shader代码分析,及自定义滤镜
- python全栈面试题_全栈工程师对Python面试中is和==区别的详细解说!看完真的学到了!...
- OpenCV用ArUco和ChArUco进行校准
- python networkx包,使用Python中NetworkX包绘制深度神经网络结构图
- 极限与连续知识点总结_高数上知识点期末复习 极限、连续、间断点(一)
- 如何循环遍历document.querySelectorAll()方法返回的结果
- 存储桶列表访问权限_十分钟从入门到精通(上)——OBS权限配置
- 在anaconda中为jupyter安装扩展插件
- 用 mCustomScrollbar 滚动条插件实现滚动更新添加数据
- Silverlight 减小 Xap 的大小
- 【精华】PB函数大全
- 基于eclipse+swing+mysql的汽车保养记录系统的开发1-----登录界面的实现
- oracle分时分段表示,管理信息系统试题及答案三套.doc
- 走近科学:揭秘在线DDoS攻击平台
- 基于 HTML5 Canvas 的简易 2D 3D 编辑器
- 一个简单的word拼音文字分离工具
- 一个机器人在m×n大小的地图的左上角(起点,下图中的标记“start“的位置)。 机器人每次向下或向右移动。机器人要到达地图的右下角。(终点,下图中的标记“Finish“的位置)。 可以有多少种不同
- 如何理解当代中国----《十亿消费者》摘录(转)