如何使用C#/VB.Net以编程方式测量以MB为单位的网站带宽(上传+下载)?希望这里的每个人都好。我正在用C#/VB.Net编写一个Windows服务,旨在测量本地主机上所有网站的带宽消耗,并将它们的统计信息存储在本地/远程数据库中以进行上传、下载等。目标平台仅包括WindowsServer2003,2003R2,2008和2008R2。我在谷歌上搜索了一下,发现以下内容:在Windows2003中使用使用SNMPmgmtapi.dll的自定义网络驱动程序收集统计信息。请指导最合适、最安全和有效的方法/技术或一组此类技术,可用于测量每个不同网站的带宽消耗。也请分享任何代码。问候Steve我找到了一个名为snmpsharpnet的程序集,它对在.NET上运行SNMP非常有帮助。根据我在这篇文章中写的解释,可以通过给定的接口计算输入带宽使用率:"in"Bandwith%=(((ifInOctets(t2)-ifInOctets(t1))*8)*100)/(ifSpeed*(t2-t1))这是示例代码。使用系统;使用System.Collections.Generic;使用系统文本;使用SnmpSharpNet;namespaceExemple2{classProgram{staticvoidMain(string[]args){/*获取一个SNMP对象*/SimpleSnmpsnmpVerb=newSimpleSnmp("192.168.1.121",161,"public");if(!snmpVerb.Valid){Console.WriteLine("IPorcomunauty好像不太酷");返回;}/*接口10上ifSpeed的简单Get用法示例*TODO:确保您必须检测正确的接口*/OidoidifSpeed=newOid(".1.3.6.1.2.1.2.2.1.5.10");/*获取ifSpeed*/DictionarysnmpDataS=snmpVerb.Get(SnmpVersion.Ver2,newstring[]{oidifSpeed.ToString()});if(snmpDataS!=null)Console.WriteLine("接口速度"{0}":{1}",oidifSpeed.ToString(),snmpDataS[oidifSpeed].ToString());elseConsole.WriteLine("不是Glop!");/*接口10上ifInOctets的简单Get用法示例*TODO:确保您必须检测正确的接口*/OidoidifInOctets=newOid(".1.3.6.1.2.1.2.2.1.10.10");DictionarysnmpData1;/*第一次获取*/snmpData1=snmpVerb.Get(SnmpVersion.Ver2,newstring[]{oidifInOctets.ToString()});if(snmpData1!=null)Console.WriteLine("八位字节数"{0}":{1}",oidifInOctets.ToString(),snmpData1[oidifInOctets].ToString());elseConsole.WriteLine("NotGlop!");intmissed=0;while(true){if(missed==0){/*当检测到非刷新数据时,保留最后一个*/snmpData1=snmpVerb.Get(SnmpVersion.Ver2,newstring[]{oidifInOctets.ToString()});if(snmpData1!=null)Console.WriteLine("八位字节数"{0}":{1}",oidifInOctets.ToString(),snmpData1[oidifInOctets].ToString());elseConsole.WriteLine("NotGlop!");}/*SomeWait(lessaproximative)*/intduration=5;System.Threading.Thread.Sleep(duration*1000);//durationseconds/*获取它第二次*/DictionarysnmpData2=snmpVerb.Get(SnmpVersion.Ver2,newstring[]{oidifInOctets.ToSt戒指()});if(snmpData2!=null)Console.WriteLine("八位字节数"{0}":{1}",oidifInOctets.ToString(),snmpData2[oidifInOctets].ToString());elseConsole.WriteLine("不是Glop!");Counter32I1=newCounter32();I1.Set(snmpData1[oidifInOctets]);Counter32I2=newCounter32();I2.Set(snmpData2[oidifInOctets]);新的Counter32();speed.Set(snmpDataS[oidifSpeed]);如果(I2.Value==I1.Value){错过+=1;继续;}decimalbandWithUsage=(((decimal)(I2.Value-I1.Value)*8)*100)/(speed*duration*(1+missed));Console.WriteLine("带宽使用率:{0}%",bandWithUsage);错过=0;}}}}这只是概念验证,现在您可能需要安装BackgroundWorker和计时器,希望对您有所帮助。最好的问候J.P以上是C#学习教程:Howtoprogrammaticallymeasurewebsitebandwidth(upload+download)inMBusingC#/VB.Net?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
