2011-10-12 7 views
0

UDPを使用してサーバー上でクライアント要求を処理するスレッドはどのように実装しますか。私はあなたがThreadPoolExecutorを使うことができるどこかで読んだことがあります、このメソッドを使っています。 Web上にマルチスレッドUDPアプリケーションを使用した例がたくさんある記事はありません。 私はThreadPoolExecutorを使うべきですか? マルチスレッドUDPサーバー/クライアントアプリケーションを実装する方法の例がありますか?Java - UDPマルチスレッドサーバー

これはTCPを使用するのが簡単なので、私はTCPマルチスレッドを使用しています。ちょうどUDPがこのように動作する方法を理解したかったのです。

答えて

0

問題はExecutorsはまったく問題ではありません。 ThreadPoolExecutorを使用するか手動スレッドを使用するかは問題ではありません。 ThreadPoolExecutorまたは他のExecutorServiceは、スレッドを管理してそれに応じて動作する単なるサービスです。あなたのRUnnableかCallableのものとは何の関係もありません。

プログラムでは、実行可能ファイルまたは呼び出し可能ファイルのみを実行プログラムに渡します。 ExecutorServiceは実行可能ファイル内で何が実行されているのかを考慮しません。したがって、TCPサーバーまたはUDPサーバー用にExecutorServiceを使用する方法は、ThreadPoolExecutorを扱う限り変更されません。送信するすべてのRUnnableを変更するだけです:)

0

UDPの主なトリックは、信頼性が低いことです。紛失したパケットの独自の検出/処理を実装する必要があります。

リクエストがあれば、Executors.newXxxxxx()をTCPと同じように使用できます。

+0

こんにちはピーター、私は本当にパケットが失われても気にしません。私はまだThreadPoolExectorを使用できますか? – redoc01

+0

ExecutorsはThreadPoolExecutorのヘルパークラスです。あなたはどちらかを使うことができますが、可能ならばエグゼキュータを使用します。 –