2011-04-30 29 views
0

Hy。我有一個客戶端服務器應用程序,服務器在某個端口上偵聽,並且爲每個客戶端生成一個管理它的線程。這是基於套接字的,類似於this,但客戶端在啓動Swing接口時調用它,一種不時地發送inf到服務器並關閉的方法,它關閉流和套接字。服務器線程保持喚醒狀態,直到客戶端套接字離開並監聽請求。線程和觀察者模式。我怎樣才能讓一個線程通知所有其他線程並執行某個方法/東西?

我想要做的是。當一個客戶端從界面做了一些事情(按下一個按鈕),通知所有其他客戶端,我很困惑,我該怎麼做。我必須做到這一點使用觀察者模式,我不知道在這種情況下使用它。我如何通知所有的步驟,他們將如何通知其他客戶?

任何sugestion EGEN雖然不是關於觀察者模式非常received.Thanx

回答

5

而不是通知一個線程(這不是很容易做和不需要恕我直言),你應該有一個對象在服務器上代表每個客戶端(如果你還沒有)。保留這些的集合。當客戶端需要通知所有其他客戶端時,它可以調用代表客戶端的其他每個對象的方法。這可以使用Observer模式完成。

+0

你認爲我在線程上使用了Observer,如果我知道了它的話。但是基於套接字的beeing我可以做些什麼來通知客戶端使用套接字? – Alexx 2011-05-02 12:57:33

+0

您的每個客戶端的通知方法會向客戶端的套接字寫入內容。它寫的是由你決定的。 – 2011-05-02 13:01:25

+0

我在想的是,除了我打電話的基本2通信渠道之外,客戶端首先寫服務器等待並接收,然後發回一些東西。但是我需要一個不同的輸入流供客戶端等待服務器通知一個不同的服務器發送賴特? – Alexx 2011-05-04 10:21:53

1

那麼假設你的客戶端發送通知到服務器。服務器充當主體或換句話說保存觀察對象。現在,每個客戶端都將註冊爲此服務器對象的偵聽器,並通過套接字連接作爲Observer進行通知。

這是你的問題嗎?

+0

我有一個服務器,它爲每個連接的客戶端創建線程,並指定線程的工作。如果客戶端將請求發送給不知道Server類的線程,客戶端如何通知所有其他客戶端在所有活動線程上調用一個方法。第一個答案認爲我在線程上使用了Observer,如果我知道了它的話。但是基於套接字的beeing我可以做些什麼來使用套接字通知客戶端? – Alexx 2011-05-02 12:56:51

相關問題