Разработка корпоративного клиент-серверного чата для локальной сети предприятия

Автор: Письмак Д.И., Бегалин А.Ш.

Журнал: Теория и практика современной науки @modern-j

Рубрика: Математика, информатика и инженерия

Статья в выпуске: 5 (35), 2018 года.

Бесплатный доступ

Статья посвящена описанию процесса разработки и использования корпоративного клиент-серверного чата для локальной сети предприятия. Программа реализована в среде Visual Studio и представляет собой приложение на основе Windows Forms. В программе имеются функции обмена общими, приватными, групповыми сообщениями, регистрация групп и пользователей, панель администрирования.

Программа, чат, мессенджер, пользователи

Короткий адрес: https://sciup.org/140273215

IDR: 140273215

Текст научной статьи Разработка корпоративного клиент-серверного чата для локальной сети предприятия

Корпоративный клиент-серверный чат для локальной сети предприятия позволяет обмениваться сообщениями зарегистрированным пользователям в трех видах чатов (публичный, приватный, групповой) и являет собой 2 приложения (клиентское и серверное) написанные в среде Visual Studio на языке C# с использованием Windows Forms.

В основе локального чата лежит технология TCP-соединений, что гарантирует доставку сообщений до конечного адресата, в отличии UDP протокола. В качестве адреса, однозначно определяющего, серверные и клиентские машины в сети используется адрес-IPv4, как наиболее распространенный по состоянию на 2018 год. Программа разделена на 2 части: клиенсткую и серверную, с целью распределения нагрузки и потоков передачи сообщений. Интерфейс клиентского приложения выглядит в соответствии с рисунком 1.

Рисунок 1. Клиентский интерфейс

Класс CorpServer содержит в себе следующие переменные:

htUsers – хэш-таблица, хранящая в себе до 30 объектов включающая в себя имя пользователя в качестве ключа и соединение в качестве данных htConnections – хэш-таблица, хранящая в себе до 30 объектов, включающая в себя соединение в качестве ключа и имя пользователя в качестве данных

Данные переменные используется для отслеживания и проверки текущих соединений на достоверность. Хэш-таблицы в данном случае являются более оптимальными в отличие от простых массивов, так как поддерживают операции добавления/удаления записей в ходе работы и позволяют проводить поиск записей по индексу, что значительно ускоряет работу с ними.

Переменная очереди (Queue) Banned хранит в себе список пользователей чье подключение раннее было ограничено администратором и используется для выполнения административных функций в дальнейших методах.

Описание рассылки сообщений

Для работы с соединениями создается отдельный поток (Thread) с каждым клиентом и работа с клиентами осуществляется поочередно, с использованием отдельных потоков в цикле. Данный способ реализован следующим образом:

public static void SendCorpChatMessages(string Message)

{

StreamWriter swSenderSender;

e = new StatusChangedEventArgs(Message);

OnStatusChanged(e);

// массив юзеров, определение количества

// помещает всех TCPклиентов в массив

{

// кидаем каждому сообщение try

{

{ continue;

}

// отсылает сообщение выбранному юзеру swSenderSender = new StreamWriter(tcpClients[i].GetStream());

swSenderSender.WriteLine(Message);

swSenderSender = null;

Метод SendCorpChatMessages используется для рассылки сообщений/команд от сервера к клиенту. В первую очередь создается объект для записи данных в поток StreamWriter. В случае возникновения какого либо события (как появление нового сообщения команды) создается массив соединений tcpClients, размером, определяемым количеством записей в htUsers и значениями непосредственно из хэш-таблицы htUsers. Затем, запускается цикл и в случае если соединение соответствует всем условиям, то в поток вносится запись, содержащая в себе сообщение/команду, после чего потом закрывается и очищается, затем цикл переходит к следующему соединению. В случае если соединение отсутствует, однако запись о пользователе есть в хэш-таблице, значит пользователь удаляется их хэш-таблицы и массива tcpClients.

Список литературы Разработка корпоративного клиент-серверного чата для локальной сети предприятия

  • Уведомление о событии в приложении, 2017. - режим доступа к источнику: https://stackoverflow.com/questions/15085970/implement-buzz-feature.
  • Многопоточность в клиент-серверных приложениях/ Metanit, 2015. - режим доступа к источнику: https://metanit.com/sharp/net/4.3.php.
Статья научная