2012-01-21 5 views
0


2つのプログラミング言語CとJavaを使用するとき、オブザーバパターンを実装する最も良い方法は何でしょうか?必ずしもオブザーバ・パターを使用する必要はありません。私は、あるクライアントのアクションの後にセッションに接続されている両方のクライアントに通知するためにnotifyall()のようなメソッドや関数を実装する方法を知る必要があります。それは文字列メッセージを送るのに十分です。

私はサーバーアプリケーションをC言語で、クライアントはJavaスイングしています。
サーバーにn個のゲームがあり、各ゲームに2つのクライアントを接続できます。
サーバとクライアントはInetアドレスでソケットを使用し、サーバとクライアントは2つのmetods(send、recieve)を持っています。
私が実現した: サーバー - C:
- 送る - クライアントにメッセージを送信する(クライアントがソケットファイルディスクリプタで指定されている)
- レシーブ - クライアントからのレシーブのメッセージ(クライアントがソケットファイルディスクリプタで指定されている)
クライアントを - Javaの
中 - 送る - サーバーにメッセージを送信する(サーバがソケットファイルディスクリプタで指定されている)
- レシーブ - サーバからのレシーブのメッセージ(サーバはソケットファイルdescriporによって指定されている)

Serverは、ローカルホスト127.0.0.1上で実行されますポートなどは10000
クライアントもあります。クライアントの送信 - 私は、ポート10000

オブザーバパターンCとJava

メッセージ「こんにちは世界\ n」はメッセージ
2.実行クライアントの 1.実行サーバー、サーバー待ちのような単純な文字列で、サーバーのアドレスを127.0.0.1にクライアントを接続しますサーバー
3.サーバーへのメッセージ - 後のメッセージ

を送っレシーブメッセージとフォーク
サーバーとクライアントの書き込みを使用して
サーバが新しいプロセスで各クライアントをproccessクライアントにメッセージを送信する送信され、受け取ったメッセージ
4.client終了

これはどのような動作です。

私は起こるはずのボタン何かをクリックした場合は、それらのそれぞれが、それぞれのボタンが追加されているのActionListener を画像アイコンを持って、たとえば16のために、n個のボタン(JButtonの)があり、クライアントGUIを表すJavaのスイングでクラスを持っています - ImageIconを変更するかどうかを変更します。
私は何を実現しようとしていることは、私は、サーバー上のセッションのようなもの持って何とか必要オブザーバー

のような方法で何かである:(ゲームを表します)
game1:CLIENT1、クライアント2
game2:クライアント3、client4を
game3:client5、client6
など。CLIENT1で
1.I押しボタン番号15は、クライアントが「「CLIENT1はノーボタンを押す15」のようなサーバ・メッセージに
2.サーバのレシーブメッセージを送るなど、メッセージを送信しますクライアント1の押されたボタンゲーム1(クライアント1、クライアント2)に参加しているすべてのクライアントに「15」を送信します。サーバーのメッセージでは、 "ボタン15のImageIconを変更する"のようなものが必要な場合もあります。
ポイント番号2は、関数notifyAllである必要があります。
これを実装するにはどうすればよいですか?

アドバイスありがとうございます。

+1

悪い質問ではないので、なぜdownvotesですか? – asgs

答えて

1

あなたは、単に

「リスト」は、ホスト名またはIPアドレスの配列のような単純なものでした「通知」するために、クライアントの「リスト」を必要とします。

あなたの "イベント"ハンドラはリストを反復するだけで、順番に各ホストにメッセージを送ります。

+0

ありがとうございます。私はすでにそれについて考えましたが、私は確信がありませんでした。私はそれを試してみます。 – user1097772