カスタム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。