我需要能够使用java监视内部网络的速度。我想我可以使用一个服务器和一个客户端的两部分系统。我不需要响应时间,例如使用ping生成的内容,但实际的上传和下载速度为mbps。使用Java测量内部网络速度/带宽
我的想法是让服务器发送一个数据包或一系列数据包到客户端,然后服务器会计算这两个点之间的网络速度。有没有人有任何想法我可以如何实现这一点?
谢谢你提前。
我需要能够使用java监视内部网络的速度。我想我可以使用一个服务器和一个客户端的两部分系统。我不需要响应时间,例如使用ping生成的内容,但实际的上传和下载速度为mbps。使用Java测量内部网络速度/带宽
我的想法是让服务器发送一个数据包或一系列数据包到客户端,然后服务器会计算这两个点之间的网络速度。有没有人有任何想法我可以如何实现这一点?
谢谢你提前。
嗯,一个有趣的问题。我希望你喜欢阅读...... :-)
我很想知道如何使用监测工具。在 的工作,系统管理员在房间里只有几个大屏幕, 显示一个包含网络统计负载的网页,并不断更新 。
我的描述的其余部分假定网络监视工具将如上所述使用 。如果你只是想在你的网络上的两个随机主机之间做一个特别的 测试,我只需要使用rsync到 传输一个相当大的文件(大约1-2MB)。我确定有 其他文件传输工具也可以计算传输速度。
在实现这一点,(尤其是在大型网络),您必须 的风险降到最低,测试充斥网络,妨碍了人们 (或程序)真正使用它。您不希望因为您正在进行测试而导致大量减速(或更糟糕的是,停电)。您的系统管理员不会感谢你...
我最好的建筑师以下列方式的工具:
鲍勃是做 以下参与个别“试验”的服务器:
Alice是显示测量结果 (通过网页或其他方式)的组件。 Alice是一个长期存在的进程 (也许是一个web服务器),被配置为定期连接到Bob服务器的列表 。对于每个配置的Bob:
当进行特定的测试,爱丽丝应报告任何故障。例如。 ,或“可以与Bob建立一个TCP连接不” “鲍勃 提前终止转让”或任何其他...
分散鲍勃服务器战略位置在(可能很大) 网络,并配置爱丽丝去他们。对于Bob的每个实例,您应配置
你想'错开'给定的爱丽丝将尝试的测试。您不希望Alice一次触发所有Bob服务器的测试,因此 淹没您的网络,可能会导致结果偏斜等等。 允许测试发生在未来的随机时间。对于 示例,如果测试间隔为每10分钟一次,则配置1分钟的“回旋余地” ,这意味着下一次测试可能发生在9到11分钟之间的任何时间。
如果一次要运行多个Alice,则实例总数应该很小。您拥有的Alices越多,您就越会干扰网络。同样,您不希望对中断负责 。
爱丽丝应该在单个测试中发送的数据量应该是 小。 500KB?您可能希望给定的测试运行时间不超过10秒。如果测试时间过长,可能会让Bob超时。
我故意省略了运输使用(TCP,UDP,等等) ,因为你会得到不同的传输问题,我不知道你 要如何处理这些问题。例如,你不得不 考虑如何处理与UDP丢弃的数据报。 你计算的结果是什么?您不会遇到TCP问题,因为它会自动重新传输丢弃的数据包。对于TCP,如果两个端点 彼此远离,则您的吞吐量将被人为地降低。这里有一些 info就可以了。
如果您有耐心阅读这一点,我希望它有帮助!
与编写服务器不同,您可能只想使用tomcat或apache作为服务器,然后您只需要客户端上传一个特定大小的文件,然后测量时间,然后转向并下载文件,来衡量下载速度。
你可以编写自己的服务器来做到这一点,但基本上你会做很多次之前做过的事情,那么你需要确保你的服务器不会歪曲数字。
我最初想到这个,但我需要它在Java中,因为它需要能够插入我的网络监控程序,它是用java编写的 – 2010-07-31 17:53:24
您的网络监控程序是客户端,它将数据发送到Web服务器,然后检索它。服务器可以使用任何语言,因为您只需要一台服务器即可轻松上载并下载文件。 – 2010-07-31 18:01:13
是的,我明白,但我将如何计算速度。假设我从监控程序向客户端发送一个1024字节的数据包。程序必须得到一个时间戳,然后计算速度,如果是这样,我会怎么做?我将如何获得准确的时间戳? – 2010-07-31 18:05:03
如果你不想要实际的速度,那么你究竟在测量什么?你关心上传和下载吗? – 2010-07-31 17:34:49
在网络上的两点完全上传和下载速度 – 2010-07-31 17:43:37