【发布时间】:2012-03-18 00:03:47
【问题描述】:
我有一个应用程序使用 TCP 套接字不断向第二个应用程序(消费者应用程序)发送数据。如何计算从第一个应用程序发送数据到第二个应用程序接收到数据所需的总时间?这两个应用程序都是使用 C/C++ 编码的。 我目前的方法如下(伪代码):
struct packet{
long sent_time;
char* data;
}
第一个应用(发射器):
packet p = new packet();
p.data = initialize data (either from file or hard coded)
p.sent_time = get current time (using gettimeofday function)
//send the packet struct (containing sent time and packet data)
send (sockfd, p, ...);
第二个应用程序(消费者)
packet p = new packet();
nbytes = recv (sockfd, p, .....); // get the packet struct (which contains the sent time and data)
receive_time = get current time
data transfer time = receive time - p.senttime (assume I have converted this to second)
data transfer rate = nbytes / data transfer time; // in bytes per second
但是,这样做的问题是 2 个应用程序(发射器和消费者)之间的本地时钟时间不相同,因为它们都在不同的计算机上运行,导致这个结果完全无用。 有没有其他更好的方法可以以适当的方式(以编程方式)执行此操作,并获得尽可能准确的数据传输率?
【问题讨论】:
-
没有同步的时基,你会遇到麻烦。
-
那么客户端和服务器应用程序都在不同的计算机上运行,因此时钟时间不会以任何方式同步。
-
"这两个应用程序都是使用 C/C++ 编码的" 您应该选择两者之一...
-
您可以尊重当地人并编写一个接口来计算根据当地人的差异。
标签: c performance sockets