Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
55
Добавлен:
07.08.2013
Размер:
735.62 Кб
Скачать
  1. Протокол взаємодії додатків клієнта та сервера

Протокол взаємодії сервера з клієнтом базується на основі отримання запитів від клієнта, їх обробці та відсилання відповідей на них.

Якщо сервер отримує повідомлення про те, що з’явився новий клієнт (Command.Login), то записуємо його у список користувачів онлайн (clientList.Add(clientInfo)) і відсилаємо всім користувачам (msgToSend.strMessage = "<- (" + msgReceived.strName + ") is ONLINE").

Якщо клієнт відключається, сервер отримує про це повідомлення (Command.Logout), видаляє користувача зі списку тих, хто онлайн (clientList.RemoveAt(nIndex)), і відсилає повідомлення усім користувачам (msgToSend.strMessage = "-> (" + msgReceived.strName + ") is OFFLINE").

Новому клієнту сервер відсилає список всіх користувачів онлайн (msgToSend.strMessage += client.strName + "*").

Сервер починає прослуховування до отримання нових повідомлень (clientSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, newAsyncCallback(OnReceive), clientSocket)).

Якщо на сервер приходить текстове повідомлення від клієнта (msgToSend.cmdCommand == Command.Message), пересилаємо його необхідному клієнтові (clientInfo.socket.BeginSend(message, 0, message.Length, SocketFlags.None,newAsyncCallback(OnSend), clientInfo.socket)).

  1. Основні бібліотеки, використані в програмі

SYSTEM – простір імен, що містить класи, які дозволяють зіставляти коди URI з шаблонами URI і групами шаблонів URI. З цього простору були використані такі класи:

BitConverter – перетворює базові типи даних в масив байтів і масив байтів в базові типи даних.

Enum– надає базовий клас для перечислень.

EventArgs – це базовий клас для класів, які містять дані про події.

Exeption – представляє помилки, які відбуваються під час виконання додатку.

Object – підтримує всі класи в ієрархії класів .NET Framework і надає низько рівневі служби для похідних класів. Він являється вихідним базовим класом для всіх класів платформи .NET Framework і коренем ієрархії типів.

У програмі був використаний інтерфейс IAsyncResult – він представляє стан асинхронної операції. Також використовується структура Int32 – представляє ціле 32-розрядне число з знаком.

SYSTEM.COLLECTIONS – містить інтерфейси і класи, які визначають різні колекції об’єктів, такі як списки, черги, двійкові масиви, хеш-таблиці і словники.

Використані класи:

ArrayList – реалізує інтерфейс IList за допомогою масиву з динамічною зміною розміру за необхідністю.

SYSTEM.TEXT – містить класи, які представляють кодування ASCII та Юнікод, абстрактні базові класи для перетворення блоків символів в блоки байтів та на оборот і клас підтримки, який управляє об’єктами String.

Використані класи:

Encoding– представляє кодування символів.

SYSTEM.NET – представляє простий програмний інтерфейс для багатьох протоколів, які використовується в сучасних мережах.

Використані класи:

IpEndPoint – представляє мережеву кінцеву точку в вигляді ІР-адреси і номера порта.

Використаний делегат:

BindIPEndPoint – представляє метод, який вказує локальну ІР-адресу і номер порту для точки обслуговування ServicePoint.

SYSTEM.NET.SOCKETS – надає реалізацію інтерфейсу Windows Sockets (Winsock) для тих розробників, яким необхідний жорсткий контроль доступу до мережі.

Використані класи:

Socket – реалізує інтерфейс сокетів.

SocketAsyncEventArgs – представляє асинхронну операцію сокета.

Використані перечислення:

AddressFamily – задає схему адресації, яку може використовувати екземпляр класу Socket.

ProtocolType – задає протокол, який підтримує клас Socket.

SocketType – вказує тип сокету, який є екземпляром класу Socket.

У програмі були використані такі методи класу Socket:

BeginAccept(AsyncCallback, Object) – починає асинхронну операцію, щоб прийняти спробу вхідного підключення.

BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object) – починає виконання асинхронного прийому даних з підключеного об’єкта Socket.

BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object) – виконує асинхронну передачу даних на підключений об’єкт Socket.

Bind – зв’язує об’єкт Socket з локальною кінцевою точкою.

Listen – встановлює об’єкт Socket в стан прослуховування.

Соседние файлы в папке курсовая docx100