- •Введение
- •Описание инструмента разработки программы
- •Описание использованных технологий. Язык программирования c#
- •MySql и язык запросов sql
- •Описание алгоритма md5(rfc1321)
- •Скорость работы и производительность
- •Надежность
- •Стойкость к нахождению коллизий
- •Описание разработанных компонентов программы. Описание базы данных
- •Описание протокола передачи данных
- •Программа-сервер
- •Описание разработанных классов
- •Программа-клиент
- •Руководство пользователя. Требования к программному и аппаратному обеспечению
- •Инструкция по использованию программного средства. Программа-сервер
- •Программа-клиент
- •Расчет экономических показателей программного продукта. Расчет себестоимости и цены программного продукта
- •Сравнение по экономическим показателям
- •Безопасность жизнедеятельности
- •Характеристика вредных факторов при работе с пк
- •Требования к размещению и оборудованию рабочего места с пк
- •Причины и профилактика статического и зрительного утомления
- •Профилактика зрительного утомления
- •Профилактика общего утомления
- •Пожарная безопасность
- •Приложения Профилактика зрительного утомления
- •Профилактика общего утомления
- •Размещено на Allbest.Ru
Описание разработанных классов
Класс «Client»
class Client
{
//события приема данных от клиента
public event DataReceivedEventHandler DataReceived;
//событие при отключении клиента
public event DisconnectedEventHandler Disconnected;
private Thread foneListener; //слущающий поток
private Socket socket; //сокет для подключения
private string name; //имя пользователя
public bool disconnected; //флаг подключения клиента
public Client(Socket socket); //конструктор клиента
public void connectUser(); //подключение пользователя
//функция, которая слушает сокет
private void ListeningFunction();
//обработка команд от подключенных клиентов
private void Parse(string str);
public string Receive(); //Прием сообщения
//Авторизация подключившегося клиента
private string Auth(string str);
//отправить сообщение клиенту
public void Send(string str);
//отключение клиента
public void Disconnect(string str);
}
В классе «Client» реализуется подключение клиента к серверу, при подключении нового клиента, на сервере создается новый обьект Client. У нового объекта есть свой сокет, через который он общается с подключившимся клиентом, и есть слушающая функция, чтобы обрабатывать данные, которые приходят от подключенного клиента.
Класс «Server».
public class Server
{
private Thread bgListener; //поток, слушающий клиентов
private Socket listenerSocket; //сокет для клиентов
private List<Client> clients; //список подключенных клиентов
private int serverPort; //порт для подключения
public bool running; //флаг запущен сервер или нет
public Server(int port); //конструктор сервера
public void Start(); //запуск сервера
public void Stop(); //останов сервера
//запуск потока, слушающего клиентов
private void StartToListen();
//добавить нового клиента
private void CreateNewClient(Socket socket);
// проверка корректности ника при подключении
private bool NickIsIncorrect(string str);
//обработка команд, приходящих от сервера
// executing received command
// args[0] - sender name
// args[1] - command
// args[2] - target name
// args[3] - parameter. Usually, message text
private void CommandRun(string[] args);
private void SendList(); //рассылка списка собеседников
//оброаботка отключившегося клиента
private void ClientDisconnected(string disconnectedUser);
//рассылка информационного сообщения/сообщения в общую комнату
private void BroadcastMessage(string sender, string str);
//отослать сообщение в приватную комнату
private void SendTo(string sender, string target, string str);
//отослать сообщение в приватную комнату отправителю
private void SendBack(string sender, string target, string str);
//обработка передачи файла
private void SendRequestResult(string sender, string target, string str);
//функция логирования работы сервера
public void AddToLog(string str);
}
Класс «Server» основной в программе, в нем хранится коллекция объектов подключенных клиентов(Client), в данном классе реализуется обмен данными между подключенными клиентами, обработка подключения/отключения клиентов.
Класс «MainForm»
public partial class MainForm : Form
{
private Server brain; //указатель на обьект Server
public MainForm(Server serv); //конструктор главной формы
//запуск сервера
private void startButton_Click(object sender, EventArgs e);
//останов сервера
private void stopButton_Click(object sender, EventArgs e);
//завершение работы сервера
private void MainForm_FormClosing(object sender, FormClosingEventArgs e);
//спрятать/развернуть окно сервера с трей(панель радом с //часами)
private void MainForm_Resize(object sender, EventArgs e);
//обработка разворачивания окна из трея
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
//закрыть главное окно, корректно завершить работу сервера
private void exitButton_Click(object sender, EventArgs e);
//показать лог работы сервера
private void logButton_Click(object sender, EventArgs e);
}
Класс «MainForm» реализует взаимодействие пользователя с интерфейсом программы.
После того как пользователь запустил программу-сервер и сам сервер, создается объект класса Server, у которого есть слушающая функция, которая слушает сокет и ждет новых клиентов, когда подключается новый клиент, создается объект класса Client, который помещается в коллекцию. Данную коллекцию подключенных клиентов и обрабатывает сервер. Объекты Client из коллекции осуществляют взаимодействие через сокет непосредственно с с подключенными к серверу клиентами, они принимают команды, передают их объекту Server, который в свою очередь обрабатывает полученную команду и производит ответные действия. Объект класса MainForm созданный при запуске программы-сервера, реализуется взаимодействие интерфейса программы с объектом класса Server/