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

Программа-клиент

Класс «Client»

public class Client

{

private Thread bgListener; //слушающий поток

private TcpClient socket; //сокет клиента

private bool connected; //флаг подключения

public string name; //имя пользователя

//события, срабатывающее при поступлении данных

public event DataReceivedEventHandler DataReceived;

public Client(); //конструктор клиента

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

public bool Connect(string ServerIP, string login, string pass);

//регистрация на сервере

public bool Register(string ServerIP, string login, string pass);

//функция, принимающая данные от сервера

private void ListeningFunction();

public void Send(string str); //отправка сообщений серверу

public void Disconnect(); //отключение от сервера

public bool Connected(); //проверка статуса подключения

}

Класс «Client» реализует взаимодействие и обмен данными с сервером.

Класс «Controller»

public class Controller

{

private Client chat; //указатель на обьект Client

private MainForm mainForm; //указатель на главную форму

private FileTrasferer transferer; //обьект для передачи файла

private string filename; //имя передаваемого файла

private string transferUser; //кому передавать файл

private long fileSize; //размер файла

private Stream stream; //поток чтени/записи файла

public fileTransfering transferStatus; //статус передачи

private string serverIP; //IP сервера для подключения

//конструктор управляющего обьекта

public Controller(MainForm form, Client client);

//подключение к серверу, вызов метода Connect обьекта Client

public bool Connect(string ServerIP, string login, string pass);

//регистрация на сервере, вызов метода Register обьекта Client

public bool Register(string ServerIP, string login, string pass);

//выполнение необходимой команды

public void ExecuteCommand(string str);

//обработка полученной команды

private void Parse(string str);

//отмена передачи файла

public void CancelTransferRequest();

//информирование пользователя о ходе передачи

private void ShowTransferProgress(int n, long totalSize);

//завершение передачи файла

private void FinishTransferFile(bool success);

//отмена передачи файла

public void AbortTransfer();

//отослать сообщение в общую комнату

public void SendAll(string str);

//отослать сообщение в приватную комнату

public void SendPrivate(string target, string str);

//передача файла

public void SendFileRequest(string target);

//вернуть статус подключения

public bool ChatConnected();

//отключиться от сервера

public void ChatDisconnect();

//вернуть имя пользователя

public string GetNameClient();

//вернуть IP сервера, к которому подключен клиент, необходимо //для информирования пользователя

public string GetServerIP();

}

Класс «Controller» является главным в программе, он отслеживает состояние клиента, обмен клиентом данными с сервером и реализует взаимодействие с интерфейсом программы. Так же с помощью данного класса производится вывод информации в общую и приватные комнаты.

Класс «MainForm»

public partial class MainForm : Form

{

private Controller brain; //управляющий обьект

public List<PrivateRoom> tabs; //коллекция приватных комнат

public FileTransferForm transferForm; //форма для //информирования пользователя о ходе передачи файла

private Icon icon1; //иконки трея

private Icon icon2;

public MainForm(); //конструктор главной формы

//подключение к серверу, создание обектов Controller и Client

private void подключениеToolStripMenuItem_Click(object sender, EventArgs e);

static string getMd5Hash(string input); //вычисление хеша пароля

//установить указатель на управляющийобьект

public void setController(Controller controller);

//вызов метода Connect обьекта Controller

public void Login(string serverIP, string login, string pass);

//вызов метода Register обьекта Controller

public void Register(string serverIP,string login, string pass);

//добавление сообщения в главную комнату

public void UpdateMainWindow(string str, bool alarm);

//обновление списка собеседников

public void UpdateUserlist(string userlist);

//обработка начжатия клавиши отправки сообщения

private void sendButton_Click(object sender, EventArgs e);

//обработка отключения от сервера

public void OnDisconnect(string reason);

//корректное завершение программы при закрытии гдавной //формы

private void MainForm_FormClosing(object sender, FormClosingEventArgs e);

//отключение от сервера

private void отключениеToolStripMenuItem_Click(object sender, EventArgs e);

//отправка сообщения по нажатию клавиши «Enter»

private void sendTextBox_KeyDown(object sender, KeyEventArgs e);

//выбор собеседника для создания приватной комнаты

private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e);

//создание приватной комнаты и интерфейса общения в приватной комнате

public void CreateTab(string str);

//выход из приватной комнаты

private void CloseTab(string str);

//добавление сообщения в приватную комнату

public void UpdatePrivateRoom(string name, string sender, string param, bool backmessage);

//показать созданную приватную комнату

private void mainTabControl_SelectedIndexChanged(object sender, EventArgs e);

//доступность элементов управления взависимости от состояния //подключения

public void ChangeStateButton(bool b);

public void AbortTransfer(); //отмена передачи файла

public void SetOpportunitySending(bool opportunity);

//обработка свертывания в трей

private void MainForm_SizeChanged(object sender, EventArgs e);

//информирование пользователя о сообщении, когда главное //окно свернуто в трей

public void startAlarm();

public void stopAlarm();

//разворачивание из трея

private void notifyIcon1_MouseClick(object sender, MouseEventArgs e);

private void MainForm_Activated(object sender, EventArgs e);

//вызов О Программе

private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e);

//создание приватной комнаты

private void button1_Click(object sender, EventArgs e);

}

Класс «MainForm» реализует взаимодействие между пользователем и программой.

Когда пользователь подключается к серверу, если подключение прошло удачно, создается объект класса Controller, в котором создается объект класса Client. В данном объекте есть функция, которая слушает команды от сервера, которые передает на обработку объекту Controller. При запуске программы создается объект класса MainForm, который осуществляет взаимодействие между интерфейсом и управляющим объектом класса Controller/