Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算通过套接字发送/接收的数据的带宽速度?_Java_Sockets_Iostream - Fatal编程技术网

Java 计算通过套接字发送/接收的数据的带宽速度?

Java 计算通过套接字发送/接收的数据的带宽速度?,java,sockets,iostream,Java,Sockets,Iostream,有人对如何计算套接字的带宽使用有什么建议吗 例如,当我通过套接字向所连接的服务器发送数据时,我希望显示正在发送的Kb/s 谷歌搜索没有透露任何有用的信息。可能我搜索了错误的术语。您可能最容易做到的就是在开始写入时记录,然后计算成功发送到Socket.getOutputStream.write()方法的字节数。对于少量的数据,这将是非常不准确的,因为它只是填充操作系统的传输缓冲区,而传输缓冲区最初占用的字节数要比实际发送的字节数快得多 然而,在相当大的数据量上,它应该以基本正确的比率进行摊销。这在

有人对如何计算套接字的带宽使用有什么建议吗

例如,当我通过套接字向所连接的服务器发送数据时,我希望显示正在发送的Kb/s


谷歌搜索没有透露任何有用的信息。可能我搜索了错误的术语。

您可能最容易做到的就是在开始写入时记录,然后计算成功发送到
Socket.getOutputStream.write()方法的字节数。对于少量的数据,这将是非常不准确的,因为它只是填充操作系统的传输缓冲区,而传输缓冲区最初占用的字节数要比实际发送的字节数快得多


然而,在相当大的数据量上,它应该以基本正确的比率进行摊销。

这在理论上是可行的,但它不能提供当前传输速度的非常准确的表示。例如:如果我登录5分钟。。。前2.5分钟什么也不做,最后2.5分钟发送100kb/s。在5分钟结束时,它会告诉我平均速度是50kb/s。自从我开始传输以来,我并没有寻找平均速度。我在寻找当前的速度。也许最后5秒的平均值会起作用,但我不知道该怎么记录这样的东西。这叫做移动平均值:。虽然有各种方法,但计算起来很简单。在任何给定时刻都没有计算带宽的方法;因为数据是离散的,所以必须有一个平均值。一个非常简单的方法是
average=(average+new\u measurement\u average)/2.0
。注意:Guava的方法可以很容易地将输出流包装成另一个流,该流计算它已写入的字节数。本文可能会给您一些想法: