私は、人々がそれらの間でファイルを共有できるようにするアプリをやっています。今はテキストを共有しようとしていますが、すぐにファイルに変更します。しかし、ソケット接続を作成する際に問題が発生しています(2つのデバイスはすでにホットスポット経由で接続されています。そのうちの1つはホットスポットであり、もう1つはホットスポットです)。Android - サーバーとクライアント間でデータを送信する
私は通常のJavaソケット接続を行うつもりでしたが、電話がスリープ状態になるとソケットが閉じる/タイムアウトすることをここで読みました。その問題のためにあなたが推薦する解決策は、インテント・サービスを使用することでした。
ClientCommServiceとServerCommServiceの2つのIntentServicesを作成しました。私は、onHandleIntent()メソッドの中で、ソケットを作成し、受信メッセージを待ち受ける/開始する(ストリームオブジェクトを作成してソケットを開始する)べきだと考えています。私の問題は、私もメッセージを送信したいと私は、メッセージをthis.out.writeObject()を送信するロジックを配置する必要がありますかわからないです。 メンバー(サーバーまたはクライアント)のいずれかによって開始できる双方向通信を作成したいので、これは重要です。
質問2:私がここでstackoverflowで見たいくつかのアプローチでは、Server用のIntentServiceしか作成されませんでした。どうして?
IntentServiceが機能しないのですか?ところで、私はどこに送信ロジックを置くべきですか?私は双方向の接続が必要です.. あなたの助けをありがとう –
IntentServiceはキューを管理していますので、FIFOシステムになりますが、あなたのケースではそれ以上の操作が1つあります。 onStartCommandメソッド内にクライアント・サーバー・ロジックを書き込むことができます。クライアントとサーバー・ロジックは独立して呼び出します。 – dhams
アップデート:onStartCommandのロジックを置くことができません。なぜなら、それはnetworkonmainthread例外を与えるからです。私はそれを動作させることができたが、今は別の問題を抱えている。実際には、サービス内に2つのスレッドがある(異なる時間に起動される)ので、すでに使用中のソケットに問題がある。 –