2011-10-12 100 views
0

如何實現一個線程來處理使用UDP的服務器上的客戶端請求。我已經閱讀過可以使用ThreadPoolExecutor的地方,正在使用這個方法。因爲Web上沒有太多文章給你使用Multithreaded UDP應用程序的任何示例。 所以我的問題是我應該使用ThreadPoolExecutor? 有人有一個如何實現多線程UDP服務器/客戶端應用程序的例子嗎?Java - UDP多線程服務器

這很容易使用TCP,所以我使用TCP多線程,只是想了解UDP如何以這種方式工作。

回答

0

事情是執行者在這裏並不是一個問題。如果您使用ThreadPoolExecutor或使用手動線程來執行它,則無關緊要。 ThreadPoolExecutor或任何其他ExecutorService就此而言只是一種管理線程並相應工作的服務。它與你的RUnnable或Callable's沒有任何關係。

在你的程序中,你只會給Runnables或Callables執行器。 ExecutorService不關心可運行內部的內容,因爲它的工作是執行它們。所以對於TCP服務器或UDP服務器使用ExecutorService的方式不會像處理ThreadPoolExecutor那樣改變。只需修改RUnnable發送和全部完成:)

0

UDP的主要技巧是它不可靠。你必須實現你自己的丟包檢測/處理。

一旦你有請求,你可以使用一個Executors.newXxxxxx()就像TCP一樣。

+0

嗨,彼得,我不介意數據包丟失。我仍然可以使用ThreadPoolExector嗎? – redoc01

+0

Executors是ThreadPoolExecutor的助手類。你可以使用,但如果可以的話,我會使用Executors。 –