私は着信接続を待ち受けていたAndroidサーバーアプリケーションを作成しなければなりませんでした。それはルート以外のアプリケーションであり、ランダムな高位のポートをリッスンします。コードは自明で、デスクトップJava上でうまく動作します。ポートをリッスンして、非常に簡単なカスタム要求/応答プロトコルを意味します。Androidサーバー:着信接続がランダムにタイムアウトするのはなぜですか?
しかし、何らかの理由でAndroidアプリケーションでさえもaccept
メソッドに入っています(つまり、着信接続を待つことになっています)。接続のタイムアウトが頻繁に発生します。
システムアプリケーション(たとえばADBサーバーなど)でさえも、定期的に着信接続をタイムアウトすることがあることがわかりました。例えばpaping
出力を参照してください:
paping -p 5555 192.168.0.105
paping v1.5.5 - Copyright (c) 2011 Mike Lovell
Connecting to 192.168.0.105 on TCP 5555:
Connection timed out
Connection timed out
Connection timed out
Connection timed out
Connection timed out
Connection timed out
Connection timed out
Connection timed out
Connection timed out
Connection timed out
Connection timed out
Connection timed out
Connection timed out
Connection timed out
Connection timed out
Connected to 192.168.0.105: time=118.02ms protocol=TCP port=5555
Connected to 192.168.0.105: time=140.02ms protocol=TCP port=5555
Connected to 192.168.0.105: time=57.01ms protocol=TCP port=5555
Connected to 192.168.0.105: time=77.51ms protocol=TCP port=5555
Connected to 192.168.0.105: time=97.01ms protocol=TCP port=5555
Connected to 192.168.0.105: time=122.02ms protocol=TCP port=5555
Connected to 192.168.0.105: time=135.52ms protocol=TCP port=5555
Connected to 192.168.0.105: time=52.01ms protocol=TCP port=5555
Connected to 192.168.0.105: time=72.51ms protocol=TCP port=5555
Connected to 192.168.0.105: time=92.51ms protocol=TCP port=5555
Connected to 192.168.0.105: time=105.51ms protocol=TCP port=5555
Connected to 192.168.0.105: time=5.50ms protocol=TCP port=5555
だから、それはいくつかの着信データからデバイスの時間のように見え、ランダム後でタイムアウトし、そのあと受け入れを開始します。 ADBはシステム・アプリケーションなので、どのガイドラインにも従っていて、比較的バグのないものにする必要があります。
どのように問題を解決し、Androidデバイスが着信接続に迅速に応答できるようにする方法を知っていますか?そうしないと、着信トラフィックを必要とするアプリケーションはバグが発生し、信頼性が低くなります。
'接続時間をoften.'?どの接続?サーバーはそれを聞いていませんでしたか?クリアしてください。 – greenapps
はい、サーバーはリッスンしています。何らかの理由で受信接続がランダムに(全く接続できません)、Javaが 'accept'メソッド呼び出し内で待機しています。 – Vitaliy
あなたはバグのあるルータを責めませんか?他のデバイスを試しましたか? – greenapps