- 主题
- 0
- 积分
- 0
- 贝壳
- 0 个
- 注册时间
- 2007-1-18
- 最后登录
- 2007-1-18
|
[原创]一段网络速度检测代码[perl]
[watermark]#!perl -w
use Net::Ping; #定义使用的模块,这个是大家应该知道吧。
use Color::Output;#这个是打印输出彩色字符的模块,大家可以到网上找到。
Color::Output::Init;
$|=1;
$host=shift||usag(); #获得命令行输入,如果没有则转到usag子程序。
$count1=0; #初试一些变量,这些是各个类型的网络状况
$count2=0;
$count3=0;
$count4=0;
$stime=time;
ti();
while(sleep(3)) #sleep执行一下后面的代码
{
$p = Net::Ping->new(); #创建一个新的ping连接
$p->hires();
if(($ret, $duration, $ip) = $p->ping($host,5.5) and $ret>0) #ping $host 返回$ret, $duration, $ip三个结果:第一个是成功与否(成功则为1,否则为0),第二个是耗用时间(以毫秒为单位),第三个是IP,if $ret>0则执行后面的。
{
system("cls"); #系统命令 cls(清屏)
ti();
printf("\n 与目标主机:$host [ip:$ip] 保持通讯中 (连接速度: %.2f ms)\n\n", $duration);
if($duration<1){$count1++;} #以下这段是以ping反馈速度$duration来判断网络状况。
if($duration<2.5 and $duration>=1){$count2++;}
if($duration>=2.5){$count3++;}
}
else #如果$ret不>0则表示ping失败,则执行后面代码
{
system("cls");
ti();
print "\n 连接到目标主机:$host 失败!\n";
$count4++;
}
$p->close(); #关闭ping连接
$ct=$count1+$count2+$count3+$count4; #以下全是整理数据后打印输出的代码。
$bf1=$count1/$ct;
$bf2=$count2/$ct;
$bf3=$count3/$ct;
$bf4=$count4/$ct;
$bf11=int($bf1*100);
$bf21=int($bf2*100);
$bf31=int($bf3*100);
$bf41=int($bf4*100);
$str1=">"x(int($bf1*20));
$str2=">"x(int($bf2*20));
$str3=">"x(int($bf3*20));
$str4=">"x(int($bf4*20));
$str11=" "x(20-int($bf1*20));
$str21=" "x(20-int($bf2*20));
$str31=" "x(20-int($bf3*20));
$str41=" "x(20-int($bf4*20));
$etime=time;
$ttime=$etime-$stime;
($hour,$minute,$second)=stime($ttime);
cprin("_"x60,7);
cprin("\n 统 计: $hour小时$minute分$second秒 进行$ct次连接测试",9);
cprin("\n 良 好 率:[>$str1$str11]$bf11% ($count1/$ct)",7);
cprin("\n 一 般 率:[>$str2$str21]$bf21% ($count2/$ct)",11);
cprin("\n 较 差 率:[>$str3$str31]$bf31% ($count3/$ct)",13);
cprin("\n 异 常 率:[>$str4$str41]$bf41% ($count4/$ct)",5);
}
sub ti
{
print < |
|