0

我编写了两个程序,一个是服务器,另一个是客户端。

这两个程序的目的是文件传输。首先,将启动服务器程序,然后启动客户端程序。客户端程序将从服务器接收文件。

我想运行一个测试,看看对于许多文件大小的传输需要多长时间。每个文件大小我会做大约 10 次。

代码没问题。当我写两个这样的脚本时:

#!/bin/bash
time=$1
for((n=0;n<time;n++))
do
    ./server "3mb.MP3"
done

#!/bin/bash
time=$1
for((n=0;n<time;n++))
do
    ./client $n
done

并先运行服务器脚本,然后运行客户端脚本。我意识到由于for循环,创建了许多服务器实例,因此创建了客户端。我只希望一个客户端和一个服务器一次相互通信。文件传输结束后,我们将创建一对新的客户端-服务器。

有什么解决办法吗?

谢谢!

(我使用的是 Ubuntu 12.04。)

4

2 回答 2

0

for如果您需要每次迭代一个客户端-服务器,只需为每个客户端和服务器执行一个全局循环而不是循环。就像是 -

time=$1
for((n=0;n<time;n++))
do
    ./server "3mb.MP3"
    ./client $n
done

要查找脚本的执行时间,您可以使用 time ./x.shwhich 将为您提供整个脚本的执行时间...如果您想要每次迭代的执行时间,那么您有每个循环的 findstartendtimes 并从后面减去以前的。

于 2013-05-10T10:31:31.537 回答
0

当然这很简单

#!/bin/bash
time=$1
for((n=0;n<time;n++))
do
    ./server "3mb.MP3"
    ./client $n
done

如果您的服务器没有在内部分叉,您可能需要这个:

#!/bin/bash
time=$1
for((n=0;n<time;n++))
do
    ./server "3mb.MP3" &
    ./client $n
done

& 号导致 shell 不等待服务器进程完成。

(感谢弗洛里斯)

于 2013-05-10T10:33:06.490 回答