【发布时间】:2012-02-15 21:32:38
【问题描述】:
当我使用 2 种编程语言 C 和 Java 时,实现观察者模式的最佳方法是什么?它不一定使用观察者模式,我只需要知道如何实现类似 notifyall() 的方法或函数来通知在一个客户端操作后连接到会话的两个客户端。只需向他们发送字符串消息就足够了。
我有 C 语言的服务器应用程序和 Java swing 的客户端。
服务器上有n个游戏,每个游戏可以连接两个客户端。
服务器和客户端使用带有 Inet 地址的套接字,服务器和客户端有 2 个方法 - 发送、接收。
我意识到:
服务器 - C :
- 发送 - 向客户端发送消息(客户端由套接字文件描述符指定)
- 接收 - 从客户端接收消息(客户端由套接字文件描述符指定)
客户端 - 在 Java 中
- 发送 - 向服务器发送消息(服务器由套接字文件描述符指定)
- 接收 - 从服务器接收消息(服务器由套接字文件描述符指定)
服务器在 localhost 127.0.0.1 和端口上运行,例如 10000
客户也是。我将客户端连接到服务器地址 127.0.0.1,端口 10000。
消息是简单的字符串,例如“Hello world\n”
1.运行服务器,服务器等待消息
2. 运行客户端 - 客户端向服务器发送消息
3. 服务器 - 接收消息并将消息发送回客户端
服务器使用 fork 处理新进程中的每个客户端
服务器和客户端写入发送和接收的消息
4.发送消息后的客户端
这是行得通的。
我在java swing中有代表客户端GUI的类,有n个按钮(JButton),例如16个,每个都有图像图标,每个按钮都添加了ActionListener
如果我单击按钮,应该会发生一些事情 - 更改或不更改 ImageIcon。
我正在尝试实现的是类似于观察者的方法
我需要以某种方式在服务器上设置会话:(代表游戏)
游戏1:客户端1,客户端2
游戏 2:客户端 3、客户端 4
游戏 3:客户端 5、客户端 6
等等。
1.我在client1中按下15号按钮,客户端向服务器发送消息,如“client1按下15号按钮”
2. 服务器收到消息,并发送类似“client1 按下按钮 15”的消息给所有在 game1 中连接的客户端(client1,client2)。在服务器消息中也会出现类似“更改按钮 15 的 ImageIcon”之类的内容。
第 2 点应该是函数 notifyAll
有什么好的和简单的方法来实现它?
感谢您的建议。
【问题讨论】:
标签: java c client-server observer-pattern