Host discovery、Network Communication、およびQoS Monitorの3 つの基本サービスを含むネットワーク サポート フレームワーク (最初は Android 用) を開発しています。
最後のサービスでは、単一のホストが別のホストに定期的に送信できる最大メッセージ/秒 (MPS)を返すメソッドを実装しようとしています。
送信するオブジェクトのサイズとネットワーク速度に基づいて、ネットワーク経由で送信できる理想的なMPSで概算を簡単に取得できます。式に信号強度 (SS)を含めようとすると、問題が発生します。
protected int getMPS(NetworkApplicationData message, Context context) {
int messageSizeBits = MemoryUtils.sizeOf(message) * 8;
int networkSpeedMbps = getNetworkSpeed(context);
float signalStrength = getNetworkSignalStrength(context);
// FIXME: what about signalStrength?
return networkSpeedMbps * 1024 * 1024 / messageSizeBits;
}
ここでの基本的な質問は次のとおりです。無線ネットワークの速度に対する信号強度の影響について、事前に確立された研究はありますか?
いくつかのテストを行ったところ、信号強度に応じて、確立されたネットワーク速度が変化することに気付きました。たとえば、「正規化された」100%SS の場合、Android API は 54Mbps のネットワーク速度値を返します。40%SS の場合、API は 7Mbps のネットワーク速度値を返します。Android API が返すネットワーク速度の値だけを信頼する必要がありますか? この場合、ほとんどの場合、過大評価された MPS が得られます。
とにかく、この問題を解決するための正しいアプローチを知り、正式な調査に基づいて計算する必要があります。