GalaxyAceをWiFi経由でラップトップに接続する実験をしています。どちらのデバイスもWiFi経由でルーターに接続されており、どちらもJavaを使用しています。
TCP接続で時々非常に高いpingが発生した後、パケットが実際に送信されるタイミングを制御できるように、UDPに基づいて接続することにしました。
ただし、Androidは依然としてUDPパケットをバッファリングし、すぐには送信しないようです。これ、または送信データが数分の1秒間送信されない場合は、WiFiを完全にシャットダウンします。
まず、応答がない限り(UDPでのパケット損失をカバーする)、1秒に1回程度の不規則な間隔で電話にpingを送信し、ping要求を繰り返し送信しました。
computer -> phone -> computer
Pinging 192.168.1.40: 148.05968ms
Pinging 192.168.1.40: 524.41156ms
Pinging 192.168.1.40: 705.8688ms
Pinging 192.168.1.40: 3.705367ms
Pinging 192.168.1.40: 3.872159ms
Pinging 192.168.1.40: 549.4541ms
Pinging 192.168.1.40: 479.29843ms
Pinging 192.168.1.40: 3.89936ms
Pinging 192.168.1.40: 428.85876ms
Pinging 192.168.1.40: 739.28125ms
私はこの問題を回避するために、100ミリ秒ごとに1バイトのデータを含むパケットを電話からコンピューターに送信し、それ以外のルーチンでは何も変更しませんでした。
computer -> phone -> computer
Pinging 192.168.1.40: 4.147753ms
Pinging 192.168.1.40: 3.738213ms
Pinging 192.168.1.40: 14.133768ms
Pinging 192.168.1.40: 4.470561ms
Pinging 192.168.1.40: 3.628386ms
Pinging 192.168.1.40: 3.898334ms
Pinging 192.168.1.40: 3.512401ms
Pinging 192.168.1.40: 7.907006ms
Pinging 192.168.1.40: 5.234216ms
Pinging 192.168.1.40: 5.639137ms
私のアプリケーションではレイテンシーを低くすることが重要なので、このように空のパケットを送信し続けます(少なくとも実際のデータが送信されない限り)。無駄なデータをネットワーク全体に投げ込むことなく、Androidにできるだけ速く応答させることができるかどうか疑問に思っています。それで、よりエレガントな解決策はありますか?
ちなみに、問題はコンピューターではなくスマートフォンにあると思いますが、コンピューターが着信パケットを待ってから送信することも考えられます。しかし、私がネットワーキングについて知っていることから、これは非常にありそうもないことです。
ご協力いただきありがとうございます!