2012-01-21 114 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