Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПСП пример записки.rtf
Скачиваний:
65
Добавлен:
13.02.2016
Размер:
22.35 Mб
Скачать

Описание разработанных классов

Класс «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/