Linux C下获取下载和上传的网速V2
2012-05-11 22:52
155 查看
/* * 作者:杨志永 * 日期:2012-04-17 10:10 * Email:ljy520zhiyong@163.com * QQ:929168233 * * 文件名: watch_network_speed.c * 编译环境:Debian 6.0.4 Testing, GCC 4.6.3 X86_64 * * 功能:获取Linux系统下的下载和上传的网速 * */ #include <stdio.h> #include <string.h> #include <sys/types.h> #include <stdlib.h> #include <unistd.h> #define BUFFER 1024 #define SECOND 1 int get_net_work_download_speed(long int * download_speed, long int * upload_speed, char * download_type, char * upload_type); int main(int argc, char * argv[]) { long int start_download_speed; long int end_download_speed; long int start_upload_speed; long int end_upload_speed; while (1) { get_net_work_download_speed(&start_download_speed, &start_upload_speed, "RX bytes:", "TX bytes:"); sleep(SECOND); get_net_work_download_speed(&end_download_speed, &end_upload_speed, "RX bytes:", "TX bytes:"); printf("下载速度: %.2lf KB/s\t", (float)(end_download_speed-start_download_speed)/(SECOND*1000)); printf("上传速度: %.2lf KB/s\n", (float)(end_upload_speed-start_upload_speed)/(SECOND*1000)); } exit(EXIT_SUCCESS); } int get_net_work_download_speed(long int * download_speed, long int * upload_speed, char * download_type, char * upload_type) { FILE * pipo_stream; size_t bytes_read; char buffer[BUFFER]; char * match; if ( (pipo_stream=popen("sudo ifconfig", "r")) == NULL ) { printf("pipo error!\n"); return -1; } bytes_read = fread(buffer, 1, sizeof(buffer), pipo_stream); if ( (fclose(pipo_stream)) != 0 ) { printf("fclose error!\n"); return -1; } if ( bytes_read == 0 ) { printf("bytes_read == 0\n"); return -1; } match = strstr(buffer, download_type); if (match == NULL) { printf("NO Keyword %s To Find!\n", download_type); return -1; } sscanf(match, "RX bytes:%ld", download_speed); match = strstr(buffer, upload_type); if (match == NULL) { printf("No Keyword %s To Find!\n", upload_type); return -1; } sscanf(match, "TX bytes:%ld", upload_speed); return 0; }
相关文章推荐
- Linux C获取下载和上传的网速V3
- java文件上传和下载 如何获取文件名称
- Ftp实习文件上传,下载单个件及文件夹下面所有文件,获取文件列表功能
- C#FTP操作类含下载上传删除获取目录文件及子目录列表等等
- JSP实现文件上传下载和删除(附:JS获取上传文件的文件名)
- python应用系列教程——python中ftp操作:连接、登录、获取目录,重定向、上传下载,删除更改
- AWS S3上传文件,并获取公用的下载链接
- win10 显示下载 上传网速
- [sharepoint]rest api文档库文件上传,下载,拷贝,剪切,删除文件,创建文件夹,修改文件夹属性,删除文件夹,获取文档列表
- Android获取网速和下载速度
- form文件上传、下载,获取返回值
- 使用.net FtpWebRequest 实现FTP常用功能 上传 下载 获取文件列表 移动 切换目录 改名
- [sharepoint]rest api文档库文件上传,下载,拷贝,剪切,删除文件,创建文件夹,修改文件夹属性,删除文件夹,获取文档列表
- Java图形界面(GUI) 动态获取上传或下载文件的路径问题
- shell获取db信息及上传下载操作
- 解析excel表获取数据,并从远程服务器下载和上传文件
- 安卓中关于图片从网络获取,压缩,上传,下载,缩略图,缓存的一些处理总结(三)
- 文本框获取焦点,将光标移动到最末端及普通上传下载
- 文件上传(无刷新,带进度条,带网速)下载完整
- java 两个通过java代码操作FTP的类,上传下载删除,获取文件