2012-01-21 157 views
0


當我使用兩種編程語言C和Java時,實現觀察者模式的最佳方式是什麼?它不一定使用觀察者模式我只需要知道如何實現像notifyall()方法或函數來通知一個客戶端的操作後連接到會話的客戶端。它足以讓他們發送字符串消息。

我在C服務器應用程序和Java swing中的客戶端。
服務器上有n個遊戲,每個遊戲可以連接兩個客戶端。
服務器和客戶端使用帶Inet地址的套接字,服務器和客戶端有2個metods - 發送,接收。
我已經意識到: 服務器 - C:
- 發送 - 發送消息給客戶端(客戶端通過套接字文件描述符指定)
- 收到 - 收到消息從客戶機(客戶機通過套接字文件描述符指定)
客戶 - 在Java中
- 發送 - 發送郵件服務器(服務器由套接字文件描述符指定)
- 收到 - 收到消息從服務器(服務器由套接字文件descripor指定)

服務器本地主機上運行127.0.0.1和端口例如10000
客戶端。我連接的客戶端服務器ADRESS 127.0.0.1,端口10000

觀察者模式C和Java

消息是簡單的字符串,如「世界,你好\ N」 1.運行服務器,服務器等待消息
2,運行客戶端 - 客戶端發送消息給服務器
3.服務器 - 收到消息和發送消息發送回客戶端
服務器proccess的
4.client端發送後使用發送叉
服務器和客戶端的寫和收到的消息中的新過程中的每個客戶端消息

這是什麼工作。

我在的Java Swing類,它代表客戶端GUI,有N按鈕(JButton的),例如16,他們每個人都有形象的圖標,每個按鈕添加的ActionListener 如果我在按鈕上的東西點擊應該發生 - 改變或不改變ImageIcon。
我試圖實現的方法有點像觀察者

我需要以某種方式對服務器類似的會議:(代表遊戲)
的Game1:客戶端1,客戶機程序
GAME2:client3,client4
game3:客戶機程序,client6
等。在客戶端1
1.I按鍵數15,客戶端向服務器發送信息,如「客戶端1按下按鈕,15號。」
2.服務器收到消息,就像發送消息「客戶端1按下按鈕15「給遊戲1(client1,client2)中的所有客戶。在服務器消息中也將是必要的東西如「改變按鈕15的ImageIcon」。
點號2應該是函數notifyAll
什麼是實現它的好方法和簡單方法?

感謝您的建議。

+1

不是一個壞的問題,爲什麼downvotes? – asgs

回答

1

你只需要一個客戶的「名單」中的「通知」

「列表」可以作爲主機名或IP地址數組一樣簡單。

您的「事件」處理程序只是遍歷列表,並依次向每個主機發送消息。

+0

謝謝它可以工作。我已經考慮過了,但我不確定。我會試試看。 – user1097772