異なるプラットフォームの2つの異なるアプリケーションが相互に通信するのに役立つサーバーのコードを書いています。少し視覚化すると、次のようになります。
App1<------>サーバー<------>App2
サーバーが行うことは、app2からvar1をリアし、app1に書き込み、次にapp1からvar2を読み取り、app2に書き込みます。このような :
while(true){
var1 = app2stream.readInt();
app1stream.writeInt(var1);
var2 = app1stream.readDouble();
app2stream.writeDouble(var2);
}
私の問題は、ある時点でサーバーにこのコードがあることです。
app1.accept();
app2.accept();
これが意味することは、何があっても、サーバーが常に実行されているという事実を考えると、app1.accept()はブロッキングメソッドであるため、app1が最初に接続する必要があるということです。
これを回避する方法はありますか?誰が最初に「来た」かに関係なく、2つのアプリケーションがサーバーに接続できるようにしてから、サーバーが上記のコードを続行するのを待つのは素晴らしいことです。accept()部分だけにスレッドを使用してから、ストリームを他のスレッドに渡すことはできますか?私はチャンネルについて少し読みましたが、少し混乱しました。どんな例でも素晴らしいでしょう。