環境
-
Windows7(Fiddler2を起動しているホストになるマシン)
-
Nexus5(3G回線を再現したいリモートの端末)
-
上記2つを同じWi-Fiで接続しています。
-
当然のことながらWi-Fiは3G回線よりも高速でないとFiddler2で3G回線は再現できません。
-
Fiddler2をダウンロード
インストールしてFiddler2を起動したら…
Fiddler2側の設定
- リモートからのコネクションを許可する
- Tools -> Fiddler Options -> Connections -> Allow remote computers to connect にチェック
- (Connectionsタブ内にある Fiddler listens on port: 8888 がリモートからアクセスする際に指定するポートになる)
Android側の設定
- ipconfigか何かでFiddler2を起動しているマシンのIPアドレスを調べて下さい
- Androidからホストにつなげる
- 設定 -> WiFi -> 接続済みのWiFiを長押し -> ネットワークを変更 -> 詳細オプションを表示 -> プロキシ(手動) -> プロキシホスト名に先ほど調べたIPアドレス -> プロキシポート(変えてなきゃ8888)を設定
これでFiddler2のプロセスにAndroidの通信が表示されたはず
さあここからが本番だ!
そもそも3G回線って何Mbpsだよ。
※回線速度に関しては適当に調べてるので、詳しい人は怒らないでね(´・ω・`)
とりあえずメーカのサイトで…IS14SHでいいか
3G 受信最大/送信最大(Mbps)3.1/1.8
まあ理論値なので実際は7、8割程度でしょう。多分。
なので受信 2M、送信 1.3M でいきます!適当。
Fiddler2で回線速度を設定
- Rules -> Customize Rules
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = "300";
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "150";
}
request-trickle-delayが送信、response-trickle-delayが受信です。
// Delay sends by 300ms per KB uploaded.
送信だと300ms(0.3秒)当たり1KBバイトなので1秒間に3.3KB(26.4Kbps)ですね。
受信は1秒間に6.6KB(52.8Kbps)ですね。
送信は1.3Mbpsにしたいので6ms当たり1KB(小数点以下切り捨て)
受信は2.0Mbpsにしたいので4ms当たり1KB
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = "4";
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "6";
}
最後に…
- 回線速度を設定したものにします
- Rules -> Performance -> Simulate Modern Speeds
あとはFiddler2を再起動して終わり。
確認したいかたはAndroidでブラウザを開いて以下のサイトとかで測定してみると良いかと
http://www.rapidnet.jp/ (Rapidnet)
先人の方がいたので↓
- Android開発で3G回線速度を再現する