如何通过网络传输文件并记录所花费的时间?

时间:2014-08-11 10:09:20

标签: shell networking network-programming network-protocols data-transfer

我正在写一篇关于网络的论文,我必须建立一个实验室来收集一些数据,我只是不确定如何收集我需要的数据。

我需要的东西看起来很简单。我想在同一个无线网络上将文件从一台计算机传输到另一台计算机,并记录这需要多长时间。我不希望只有发送到路由器然后从路由器到另一台计算机的文件才能加密。

我试图弄清楚如何做到这一点,FTP似乎很明显,但我真的不确定如何记录转移所需的时间。

我正在使用Apple计算机BTW。

非常感谢帮助。

2 个答案:

答案 0 :(得分:1)

大多数基于GUI的FTP客户端会告诉您传输的时间以及产生的带宽计算结果。实际上,即使是最原始的基于文本的FTP客户端也会告诉您已经转移了多少位多少秒。

您准备通过网络发送文件所花费的时间来测量什么?

测量这些东西时需要考虑很多事情。永远不要认为你想要测量的东西是瓶颈。例如,您可能通过无线网络测量xMbps,认为测量的带宽是由于无线连接本身的瓶颈造成的,而实际上它只是路由器上的CPU最大化。或者您可以测量yMbps的带宽,然后意识到瓶颈是由机械5400rpm硬盘驱动器造成的。

答案 1 :(得分:1)

我会使用默认安装在OSX上的netcat /usr/bin/nc。它有开关来控制它是使用tcp还是udp并且没有开销或登录或传递文件名和权限。作为命令行驱动,您也可以轻松计时。

nc -l 30000      # Act as a server and listen on port 30000

在不同的终端窗口中:

echo Hi | nc localhost 30000    # Send string "hi" to server on localhost port 30000

如果您想为文件传输计时,可以使用dd制作任意大小的文件并time为其计时:

nc -l 30000 > /dev/null

time dd if=/dev/zero bs=1m count=1000 | nc localhost 30000   # Send a file of 1,000 blocks of 1MB of zeroes to netcat server and time result.

注意:

请注意,您不是在磁盘上读取或写入磁盘,因为您的磁盘可能只能维持150MB / s,这与您的网络可以传输的顺序相同,因此磁盘会降低表面传输速率。这就是为什么我从/ dev / zero读取并写入/ dev / null,因为以下测试表明这个组合可以维持17GB / s

time dd if=/dev/zero of=/dev/null bs=1m count=500000 
500000+0 records in
500000+0 records out
524288000000 bytes transferred in 29.350139 secs (17863220400 bytes/sec)

有一些如何使用它的例子here