ソケットから行を読み取り、それぞれをブロックキューに入れます

StackOverflow https://stackoverflow.com/questions/5356859

  •  27-10-2019
  •  | 
  •  

質問

誰でもJavaで例を提供したり、ソケットから行を非同期的に読み取り、各行をブロックキューに入れるクラスを実装することをアドバイスできます。ソケットが接続されており、ブロックキューと消費者がすでに存在していると仮定します。

編集:もう1つ、不活動期間後にタイムアウトする能力が必要であり、コマンドですぐに停止する必要があります。

それは宿題ではありません。私は単にこれをうまくやる方法についての完全な例を見つけることができませんでした。

どうもありがとうございました。

役に立ちましたか?

解決

正直に言うと、すでに仕事をしているように聞こえます。あなたがする必要があるのは、ブロッキングキューを作成し、それを処理するスレッドを用意することです。 datainputStream 'in'を持っていると仮定します...

このようなもの:

BlockingQueue<String> receivedQueue = new LinkedBlockingQueue<String>();
public void run()
{
    while (true)
    {
        try
        {
            receivedQueue.put(in.readUTF());
        } catch (EOFException e)
        {
            ch.getClient().disconnect();
            break;
        } catch (IOException e)
        {
            break;
        } catch (InterruptedException e)
        {
            break;
        }
    }
    theQueueProcessor.interrupt();
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top