Шаблон наблюдателя C и Java - PullRequest
0 голосов
/ 22 января 2012

Что может быть лучшим способом реализовать шаблон наблюдателя, когда я использую 2 языка программирования C и Java?Это не обязательно использовать шаблон наблюдателя. Мне просто нужно знать, как реализовать метод или функцию, такую ​​как notifyall (), чтобы уведомить обоих клиентов, которые подключены к сеансу после действия одного клиента.Достаточно просто отправить им строковое сообщение.У меня есть серверное приложение на C и клиенты в Java Swing.На сервере есть n игр, к каждой игре может быть подключено два клиента.сервер и клиент используют сокеты с адресом Inet, а сервер и клиент имеют 2 метода - отправка, получение.Я понял: сервер - C:- отправить - отправить сообщение клиенту (клиент указывается дескриптором файла сокета)- recieve - получить сообщение от клиента (клиент указывается дескриптором файла сокета)клиент - на Java- отправить - отправить сообщение на сервер (сервер указан дескриптором файла сокета)- recieve - получить сообщение от сервера (сервер указан дескриптором файла сокета)Сервер работает на локальном хосте 127.0.0.1 и порте, например, 10000Клиенты тоже.Я подключаю клиентов к адресу сервера 127.0.0.1, порт 10000.

Сообщение представляет собой простую строку, например "Hello world \ n" 1. Запустите сервер, сервер ожидает сообщений2. запустить клиент - клиент отправить сообщение на сервер3. сервер - получить сообщение и отправить сообщение обратно клиентусервер обрабатывает каждого клиента в новом процессе, используя forkсервер и клиент пишут отправленные и полученные сообщенияКонец 4.client после посланного сообщения

это то, что работает.

У меня есть класс в java swing, который представляет графический интерфейс клиента, есть n кнопок (JButton), например, 16, у каждой из них есть значок изображения, каждая кнопка добавляет ActionListener, если я нажимаю на кнопку, что-то должно произойти- изменять или не изменять ImageIcon.То, что я пытаюсь реализовать, это что-то вроде наблюдателя

Мне нужно что-то вроде сеансов на сервере: (что представляет игры)игра1: клиент1, клиент2игра2: клиент3, клиент4игра3: клиент5, клиент6так далее..1. Я нажимаю кнопку № 15 на клиенте 1, клиент отправляет на сервер сообщение типа «клиент1 нажал кнопку № 15»2. Сервер получит сообщение и отправит сообщение типа «нажата кнопка client1 15» всем клиентам, подключенным в game1 (client1, client2).В сообщении сервера также будет, если необходимо, что-то вроде «изменить ImageIcon кнопки 15».точка № 2 должна быть функцией notifyAllКакой хороший и простой способ это реализовать?

Спасибо за советы.

1 Ответ

1 голос
/ 22 января 2012

Вам просто нужен «список» клиентов, чтобы «уведомить»

«Список» может быть таким же простым, как массив имен хостов или IP-адресов.будет просто перебирать список, посылая сообщение каждому хосту по очереди.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...