1. linux下里面如何获取网卡的实时网速
#include <time.h>
#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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <error.h>
#include <ifaddrs.h>
#include <net/if.h> /* for ifconf */
#include <linux/sockios.h> /* for net status mask */
#include <netinet/in.h> /* for sockaddr_in */
#include <sys/socket.h>
#include <sys/ioctl.h>
/* For "open" function */
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
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
------------------------
纯手打 代码都给你了
2. 如何测试两台linux服务器之间的连接速度有什么命令或软件可以做到详细些。
iperf,具体要纤细直接去看文档,简单给列条测试:(TCP和UDP知只是两种传输数据的协议)。
TCP测试:
1、客户端执行:./iperf -c host -i 1 -w 1M,其中-w表示TCP window size,host需替换成服务器地址。
2、服务器执行:./iperf -s -i 1 -w 1M '这_是指定windows如果是 iperf -s则windwos默认大小为8kbyte/s 。
(2)linux怎么测试网速扩展阅读:
优势:稳定性。
Linux系统是众所周知最具稳定性的系统;事实上,以Linux系统的美国服务器用户在出现系统崩溃的反馈上比例非常少。这对于用户来说,特别是小型和中小型企业的用户特别有价值,因为服务器系统一旦崩溃对企业的业务会造成很大的影响。
与windows相比,Linux处理不运行的进程的能力远高于windows,因为正是这些进程影响了windows的稳定性的主要因素。
3. linux测试网速的工具
1.fast
2.speedtest
3.iperf
4. linux 如何查看当前进程占用的网速
没办法查看进程的网速,可以看当前的网速流量
使用iftop命令;
安装iftop,如果默认找不到就安装个epel源(回此处是答centos6的)
cd/usr/local/src
wgethttp://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm
rpm-ivhepel-release-6-8.noarch.rpm
yumcleanall
yummakecache
yum -y install iftop
iftop
=》 《=箭头指示出是进还是出的流量
TX: 发送流量
RX: 接收流量
5. linux如何判断网络是百兆还是千兆
必须 测速 两台电脑 直接传文件。 实际网速跟很多情况有关。网线质量 路由器速率 双方的网卡 干扰 网络中有无感染病毒的主机。必须实际测速 。用socat 或者 ftp 之类在局域网内部直接传文件,看速率。
ethtool eth0
mii-tool -v eth0
可以查看连接速率是100m 还是1000m 但这不一定等于网络实际可提供的带宽。所以得测速
6. 如何查看两台电脑之间的网络是否畅通
Ping命令常用于测试网络的连通性,是否正常运行。
方法如下:
用其简单的ping 命令,如: ping 192.168.1.1,可以ping前端的网关IP地址 ,局域网内其它的电脑IP地址,远程的一个网站IP地址。
注:现在多数网络设备都有禁止ping的功能,因此有些网络实际上是通的,而通过ping命令却显示不通。
当ping命令返回下面的结果时,说明网络是通畅的:
5、如果显示timeout则网络未连接或掉包。如果显示字节、时间等信自息则网络正常,时间的MS数越小,说明网速越快。
Ping 是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。利用“ping”命令可以检查网络 是否连通,可以很好地分析和判定网络故障。应用格式:Ping空格IP地址。该命令还可以加许多参数使用,具体是键入Ping按回车即可看到详细说明。
7. linux查看网速命令
liunx本身没有抄特别完美的网袭速命令,但有几个可以用nload,iftop,iptraf,nethogs,bmon,slurm,tcptrack这些命令都不是liunx内部命令,也就是说不是所有liunx版本都包括这些命令。目前最流行的是speedtest这个命令是需要安装的
8. 怎么用ping命令测试网速
1、先来检测一下内网是速连通,假如内网其他机器的IP是192.168.1.10,我们就可以用ping 192.168.1.102 -t,-t是一直ping,如图所示:
ping命令使用详解
以上就是怎么ping网速的相关介绍,你可以通过上面的说明了解怎么通过ping命令来检测网速,当然如果你想了解更多ping命令的使用方法,你可以输入ping /?,这时会显示所有有关ping命令的参数,具体如下:
用法: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
[-r count] [-s count] [[-j host-list] | [-k host-list]]
[-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name
选项:
-t Ping 指定的主机,直到停止。
若要查看统计信息并继续操作 - 请键入 Control-Break;
若要停止 - 请键入 Control-C。
-a 将地址解析成主机名。
-n count 要发送的回显请求数。
-l size 发送缓冲区大小。
-f 在数据包中设置“不分段”标志(仅适用于 IPv4)。
-i TTL 生存时间。
-v TOS 服务类型(仅适用于 IPv4。该设置已不赞成使用,且
对 IP 标头中的服务字段类型没有任何影响)。
-r count 记录计数跃点的路由(仅适用于 IPv4)。
-s count 计数跃点的时间戳(仅适用于 IPv4)。
-j host-list 与主机列表一起的松散源路由(仅适用于 IPv4)。
-k host-list 与主机列表一起的严格源路由(仅适用于 IPv4)。
-w timeout 等待每次回复的超时时间(毫秒)。
-R 同样使用路由标头测试反向路由(仅适用于 IPv6)。
-S srcaddr 要使用的源地址。
-4 强制使用 IPv4。
-6 强制使用 IPv6。