Комната для дискуссий (пример чат-программы)
Пример чат-программы 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 ушел"
}
};
