gpt4 book ai didi

c - 套接字 : measure data transfer rate (in bytes/second) between 2 applications

转载 作者:行者123 更新时间:2023-12-01 14:01:44 24 4
gpt4 key购买 nike

我有一个使用 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 个应用程序(发射器和消费者)之间的本地时钟时间不同,因为它们都在不同的计算机上运行,​​导致这个结果完全无用。有没有其他更好的方法以正确的方式(以编程方式)执行此操作,并获得尽可能准确的数据传输速率?

最佳答案

如果您的协议(protocol)允许,您可以从服务器发回对接收到的数据包的确认。如果您想确保服务器接收/处理数据,这也是必须的。

如果有,您可以简单地计算客户端的费率。只需从发送+ACK 间隔的长度中减去 RTT,您就会得到非常准确的测量结果。

或者,您可以使用诸如 NTP 之类的时间同步工具来同步两台服务器上的时钟。

关于c - 套接字 : measure data transfer rate (in bytes/second) between 2 applications,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9754883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com