日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux中ifi_info的英文全称,linux下里面如何获取网卡的实时网速

發(fā)布時(shí)間:2023/12/16 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux中ifi_info的英文全称,linux下里面如何获取网卡的实时网速 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

滿意答案

nanrui8251

2018.05.28

采納率:44%????等級(jí):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分享舉報(bào)

總結(jié)

以上是生活随笔為你收集整理的linux中ifi_info的英文全称,linux下里面如何获取网卡的实时网速的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。