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

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

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

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

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

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

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

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

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

IDR: 140273215

Automation of the workplace of the medical center registrator

The article is devoted to the description of the process of development and use of corporative client-server chat for local network of enterprice. The program is implemented in the Visual Studio environment and is an application. The program has the functions of message rotation in public, group and private chats, user and group registration, administration panel.

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

Корпоративный клиент-серверный чат для локальной сети предприятия позволяет обмениваться сообщениями зарегистрированным пользователям в трех видах чатов (публичный, приватный, групповой) и являет собой 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.