Иллюстрированный самоучитель по Architecture .NET

Комната для дискуссий (пример чат-программы)

Пример чат-программы 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 ушел"
}
};
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.