Комната для дискуссий (пример чат-программы)
Пример чат-программы EventOeTO иллюстрирует архитектуру как сервера, так и клиента. В сервере реализованы следующие методы:
- JomChat,
- QuitChat;
- ShowMembers
Когда в программе регистрируется новый участник или уходит зарегистрированный, сервер посылает сообщение об этом клиенту. Обработчик соответствующего события выводит на экран надлежащее сообщение. Приведем пример выдачи программы:
sender = 01 Chat Room, Michael has joined the chat sender = 01 Chat Room, BOD has – oned the chat sender = 01 Chat Room, Sam nas ]oinea tne chat – After 3 nave joined--- Michael Bob Sam sender = 01 Chat Room, BOD has qait the chat – After 1 has quit--- Michael Sam
А вот и перевод:
отправитель = Комната для дискуссий 01, Майкл присоединился к чату отправитель = Комната для дискуссий 01, Боб присоединился к чату отправителе = Комната для дискуссий 01, Сэм присоединился к чату – После того, как 3 присоединились--- Майкл Боб Сэм отправитель = Комната дгя дискуссий 01, Боб оставил чат – После того, как 1 покинул--- Майкл Сэм
Исходный код клиента
В клиенте реализованы обработчики событий. Прежде всего, клиент создает экземпляр серверного объекта, а затем ставит в соответствие каждому событию обработчик события. Затем клиент вызывает методы сервера. Эти вызовы приводят к генерации сервером событий, обрабатываемых соответствующими обработчиками событии клиента:
//ChatClient.h _gc class ChatClient // класс сборщика мусора ChatClient { public: static void OnJoinChat(Object *pSender, ChatEventArg *pe) { Console::WrxteLine { "sender = {0}, {1} has joined the chat", // "отправитель = {0}, {1} присоединился к чату ", pSender, pe › pName; } static void OnQuitChat(Object *pSender, ChatEventArg *pe) { Console::WriteLine( "sender = 40}, {1} has quit the chat", // "отправитель = {0}, {1} покинул чат ", pSender, pe › pName); } static void Main() { // создать сервер чата ChatServer *pChat = new ChatServer("01 Chat Room"); // "Комната для дискуссий 01" // Регистрация обработчиков сообщений от сервера pChat › pJoin += new JoinHandler(pChat, OnJoinChat); pChat › pQuit += new QuitHandler(pChat, OnQuitChat); // вызвать методы сервера pChat › JoinChat("Michael"); // Майкл pChat › JoinChat/'Bob"); // Боб pChat › JoinChat("Sam"); // Сэм pChat › ShowMembers("After 3 have joined"); // "После того, как 3 присоединились" pChat › QuitChat("Bob"); // Боб pChat › ShowMembers("After 1 has quit"); // "После того, как 1 ушел" } };