0

カスタムLinuxボックスへのユーザーインターフェイスとしてAndroidタブレットを使用するアプリケーションを開発しています。2つのデバイスはTCPで接続されています(Androidはクライアント、ボックスはサーバーです)。サーバーごとに1つのクライアントしかありません。また、この例を使用してTCPクライアントコードを作成しました。

http://content.gpwiki.org/index.php/Java:Tutorials:Simple_TCP_Networking

私は同じライターとリーダーを使用していますが、接続を初期化するための異なる方法(AsyncTask)を使用しています。

Androidとリモートシステム間のTCPインタラクションは常に次のとおりです。

  1) The Android sends a command to do something.
  2) The Server does it and sends a reply.

私は、TCPソケットが(5秒で)タイムアウトし、IOExceptionをスローする場合をリンクの喪失として扱ってきました。その結果、私のソフトウェアはサーバーとの通信を再確立するプロセスを実行します。(5秒は、既存のシステムコマンドを完了するのに必要な時間よりもはるかに長いです、ところで)

いくつかの問題があります:

  1) Establishing (and Re-establishing) WIFI communications to my server takes
     a significant amount of time.  It's not a big deal at start up, but running
     through it again definitely doesn't sit well with the users.

  2) I've seen PLENTY of examples where the command was sent, the server executed
     it, and sent a reply, but for some reason, the reply just doesn't show up in
     my StreamReader.

私の知る限り、サーバーまたはリンクに問題はありませんが、Androidが応答を受信しませんでした。サーバーが確実に応答を送信していることを確認しました。

より「防弾」なTCP接続の概念について誰かがアイデアを勧めることはできますか?おそらく、これらのエラーのいくつかを無視するかもしれません(それらの後にクリーンアップする方法があると仮定します...ありますか?)おそらく、ソケットに読み書きするためのより信頼できる方法がありますか?

どんな提案もありがたく受け入れられ、それに基づいて行動します。ありがとう、R。

4

1 に答える 1

0

どうやら、答えはJensが提案したもののようです。よくできました、サー (私は推測します)... Android の設定メニューにアクセスできる WiFi スリープの設定がありますが、明らかに役に立ちません。

一方、WiFi ロックを取得する (WifiManager.createWifiLock ("Tag"); を使用して取得する) と、うまく機能したようです。

ただし、誰かが尋ねる前に、私はロックされたまたはロックされていない Wifi の動作に関する情報をまったく持っていません。アプリケーションで WiFi が機能するかどうかを納得させるものについては、何も言えません。言えることは、ロックを取得し、バッテリーをねじ込むことです...

R.

于 2012-04-20T17:01:50.347 に答える