現在、サーバー/クライアント - アプリケーションを実装しようとしていますが、問題が発生しました。解決策が見つかりません。
ログインをServer
待っている を実行し、それらを に追加し、それぞれに新しいものを開始して、個々のリクエストなどを処理します。Clients
cachedThreadPool
Runnable
Client
サーバーが処理を行った後にブロードキャストする必要がある、これらの要求に対する応答がいくつかあります。
this.mOos = new ObjectOutputStream(this.mSocket.getOutputStream());
this.mOos.flush();
this.mOis = new ObjectInputStream(this.mSocket.getInputStream());
while(true)
{
Object o = this.mOis.readObject();
if(o !=null && this.mInputList.size() < 20)
{
this.mInputList.add(o);
}
if(!this.mInputList.isEmpty())
{
handleIncomingObject();
}
if(!this.mOutputList.isEmpty())
{
try
{
this.mOos.writeObject(this.mOutputList.remove(0));
this.mOos.flush();
this.mOos.reset();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
今私が問題を抱えているのは、リクエストを処理するときです:
handleIncomingObject();
これは放送する必要があります。
私のアプローチはExecutorService
、実行可能ファイルを作成するときにオブジェクトへの参照を与えて、さまざまなスレッドのスレッドプールにアクセスできるようにすることです。
ご覧のとおり、すべてのクライアントは独自のものを持っています
LinkedList<Object> mInputList
LinkedList<Object> mOutputList
着信メッセージと発信メッセージをバッファリングします。
私はhandleIncomingObject()
次のようなことをしたいと思います:
//assume exec as ExecutorService
for(Thread t : exec)
{
mOutputList.add(new Message(message));
}
すべてのヘルプや提案を事前に感謝します。
こんにちは、ベン。