3

为了检查吞吐量,我修改了蓝牙聊天示例。

  1. 我在 UI 中提供了一个发送按钮,它发送一些预定义的编号。字节到服务器套接字并等待确认

  2. ServerSocket 等待某个字符串,一旦获得数据,它就会通过发送确认来回复。

这里我计算的这个连接的吞吐量如下。

  1. 我记录发送数据的开始时间。

  2. 收到确认后,我记录结束时间。

  3. 所以吞吐量将是(发送的数据大小+接收的确认大小)/花费的时间。

结果是:

dataSent(KB)-------吞吐量(每秒千位)

1KB                         ~200Kbps

5KB                         ~560Kbps 

10KB                        ~688Kbps

50KB                        ~512Kbps

根据从应用程序获得的一些数据 行为是,对于 1 KB 或 5 KB 等低数据,吞吐量较小。它增加到大约 40 KB 或但在 50 KB 左右之后又开始减少。我可以看到接收端发生了一些垃圾收集,这增加了延迟。

我想知道这是否是正确的行为。为什么像 1KB 或 5 KB 这样的更少数据吞吐量会减少然后它会增加。我可以考虑哪些可能会增加延迟的事实。现在,当发送方收到接收方的确认时计算吞吐量(其完整的往返计算)。我可以像发送数据一样进行单程旅行,并且在接收到所有内容后,我会计算接收器中的吞吐量。我试过了,但是两部手机之间存在毫秒差异,这给了我错误的结果,有些时间是负值。请帮助我理解正确的行为。

4

1 回答 1

0

一个可能的因素是蓝牙执行一些动态适应,可以允许连接随着时间的推移而改善并增加有效吞吐量。

1) 自适应跳频 (AFH):由于 BT 使用与 wifi 相同的 2.4GHz 频谱,因此您的 wifi 流量可能会破坏某些 BT 信道并导致重传。BT 设备会随着时间的推移检测干扰,并不断重新协商它们使用的频率以避免干扰。

2) 信道质量驱动的动态数据速率——BT 设备动态地改变物理数据速率,以便通过调整高速率/低可靠性与低速率/高可靠性数据包的使用来找到最佳吞吐量。

这些类型的算法可以使吞吐量随着时间的推移而变得更好。

于 2011-10-18T17:34:57.107 回答