Windows-додаток Інтернет-пейджера по типу ICQ

Інтернет пейджер типу ICQ: можливості, специфікація протоколу, комунікація між сервером та клієнтом. Загальний вигляд алгоритму додатка сервера. Вибір мови та середовища програмування. Потокові та дейтаграмні сокети. Бібліотеки, використані в програмі.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 06.08.2013
Размер файла 2,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

[Введите текст]

РЕФЕРАТ

Пояснювальна записка до курсової роботи «Windows-додаток Інтернет-пейджера по типу ICQ».

Мета роботи - розробити сервер Windiws-додаток, що здійснюватиме передачу повідомленьв мережі.

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

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

СОКЕТ, АСИНХРОННА МОДЕЛЬ, ІНТЕРНЕТ ПЕЙДЖЕР, ПЕРЕДАЧА ПОВІДОМЛЕНЬ, ДОДАТОК.

СПИСОК ТЕРМІНІВ ТА СКОРОЧЕНЬ

Сокет (socket) - високорівневий уніфікований інтерфейс взаємодії з телекомунікаційними протоколами.

Інтернетпейджер - це програма для обміну миттєвими повідомленнями через комп'ютерні мережі в режимі реального часу.

Клієнт-сервер (англ. Client-server) - обчислювальна або мережева архітектура, в якій завдання або мережеві навантаження розподілені між постачальниками послуг (сервісів), званими серверами, і замовниками послуг, званими клієнтами.

Клієнт (англ. Client) - комп'ютер (або програма), що використовує ресурси, надані іншим комп'ютером (або програмою), який називається сервером.

Сервер - програма, що надає деякі послуги іншим програмам (клієнтам).

Асинхронне програмування - це програмування, дозволяє виконувати частини програми окремо від головного потоку виконання і сповіщати основний потік про завершення, помилки та перебіг операцій.

ТСР (Transmission Control Protocol) - протокол керування передачею. Це один із основних мережевих протоколів Інтернету, призначений для управління передачею даних в мережах і під мережах ТСР/ІР.

ВСТУП

В даний час багато додатків використовують для обміну даними відкриті канали зв'язку, і перш за все Internet. Для користувачів часто першочерговою метою є надійність передачі повідомлень та її швидкість. Саме тому сьогодні є актуальною тема розробки додатків, які б підтримували функцію миттєвої передачі повідомлення в мережі. Також виникає необхідність користувачів знати, хто з інших клієнтів додатка є підключеним на даний момент для визначення можливості миттєвого обміну повідомленнями.

Метою роботи є розробка сервера додатку по типу Інтернет-пейджера ICQ, який забезпечує пересилання даних між користувачами в мережі.

Предметом дослідження є мережевий обмін інформацією між клієнтами в ОС Windows.

Об'єктом дослідження є процес мережевого обміну інформацією між клієнтами в ОС Windows.

Актуальність теми курсового проекту визначається необхідністю миттєвої передачі текстових повідомлень в мережі.

РОЗДІЛ 1. ІНТЕРНЕТ ПЕЙДЖЕР ТИПУ ICQ

1.1 Можливості ICQ

ICQ- це комунікаційна програма для передачі повідомлень в мережі. В основі її роботи лежить метод збереження всіх повідомлень, що надсилаються користувачами, на сервері до тих пір, поки адресат не підключиться до мережі. ICQ може:

передавати повідомлення напряму між двома програмами ICQ;

передавати такі повідомлення через сервер компанії Mirabilis, якщо по якійсь причині неможливо передати напряму;

підтримувати chat по протоколу TCP;

передавати файли по протоколу UDP.

ICQ часто називають аналогом пейджера в інтернеті. Для забезпечення мобільності користувачів, їм присвоюють номери, що не залежать від їх положення в мережі на даний момент, і називаються UIN (UniversalInternetNumber). Але при передачі даних програмі доводиться отримувати ІР-адресу користувача з другої сторони, тому що без нього передача по ТСР/ІР неможлива. Для перетворення номерів користувачів в ІР-адреси використовуються спеціальні сервери.

В момент отримання доступу до InternetICQ з'єднується з одним із таких серверів і реєструється на ньому, передаючи ім'я і пароль. Сервер запам'ятовує поточну ІР-адресу цього користувача. Поки користувач на на лінії, сервер може обробляти запити інших ICQ на перетворення номера користувача в його поточну ІР-адресу. Ці запити і відповіді передаються по протоколу UDP.

Отримавши ІР-адресу другої сторони, ICQможе з'єднатися з клієнтом ICQ на другій стороні і передавати дані напряму. Короткі повідомлення ICQ може передавати по UDP. Це протокол швидший ніж TCP, так як не орієнтований на з'єднання, а посилає дані окремими пакетами. Але UDPне надійний, тому використовуються підтвердження доставки. ICQ робить до 6 спроб відправити повідомлення по UDP. І якщо ні на одну із них підтвердження не прийшло, ICQ виводить повідомлення, що не може передати повідомлення напряму, пропонуючи передати через сервер Mirabilis. Коли отримувач повідомлення наступний раз підключиться для реєстрації, це повідомлення буде йому перенаправлене.

Якщо можливо, ICQ намагається встановити пряме ТСР з'єднання між сторонами, які обмінюються повідомленнями. В результаті, наступні повідомлення можуть пересилатися по вже встановленому ТСР-з'єднанню, що надійніше чим UDP, і достатньо швидко.

Користувач може створити «список контактів» - список інших користувачів ICQ. Коли будь-який користувач із цього списку завантажує додаток клієнта і реєструється на сервері -то повідомлення про це можуть отримувати всі користувачі, в чиїх «списках контактів» знаходиться власник даного UIN. Кожен користувач може вказати свій статус, яких свідчить про бажання користувача отримувати які-небудь повідомлення.

1.2 Специфікація протоколу ICQ

З'єднання з другим клієнтом, що на даний момент знаходяться в Internet (online) здійснюється за допомогою протоколу ТСР зі встановленням прямого з'єднання між сторонами, що обмінюються повідомленнями. Всі інші з'єднання здійснюються з використанням пакетів протоколу UDP, що пересилаються через ICQ сервер. Отримання кожного UDPпакету має бути підтверджене сервером. У випадку неотримання клієнтом підтвердження від сервера протягом 10 секунд, клієнт повторно відсилає пакет. Після 6 невдалих посилок клієнт посилає на сервер повідомлення B_MESSAGE_ASK, отримавши яке сервер повинен негайно отримати. Процедура повторюється два рази. Якщо ні на один із пакетів, що посилався не було отримано підтвердження, ICQ клієнт припускає, що користувач відключився від Internet (off-line).

Перед тим, як почати встановлювати будь-яке з'єднання, клієнт повинен зареєструватися на одному із ICQ серверів. Під час процедури реєстрації клієнт посилає серверу інформацію про себе таку як ІР адресу, ТСР порт, зарезервований для ICQ, пароль користувача і список інших користувачів, які знаходяться в «списку контактів» клієнта. Клієнт повинен періодично посилати на сервер повідомлення «KEEP_ALIVE», що свідчить про те, що клієнт все ще підключений до мережі. За замовчуванням клієнт посилає UDP пакети на сервер, використовуючи порт 4000.

Функції «послати повідомлення користувачу непідключеному до мережі», отримання інформації про користувача», пошук користувача», зміна інформації поточного користувача» реалізуються через пакети протоколу UDP, які посилаються на сервер. В полі «DATA» UDP пакету розміщується інформація про UIN відправника, код, що ідентифікує запитану функцію і необов'язкові параметри.

Коли користувач надсилає повідомлення іншому користувачу, що зареєстрований на сервері, ICQ клієнт намагається встановити ТСР з'єднанняз цим користувачем, використовуючи аналогічну структуру поля DATATCP пакету. Після відсилання повідомлення, з'єднання не розривається і може бути використано для відсилання наступних повідомлень. З'єднання закривається, коли один з користувачів від'єднується або втрачає зв'язок з сервером.

1.3 Комунікація між сервером та клієнтом

Для здійснення комунікації між сервером та клієнтом ICQ використовує протокол UDP. В таблиці 1 вказується як заповнюється поле даних пакету UDP при передачі від клієнта до сервера.

Довжина

Значення

Назва

Опис

2 байти

02 00

VERSION

Версія протоколу ІР

2 байти

хх хх

COMMAND

Код функції

2 байти

хх хх

SEQ_NUM

Порядковий номер

2 байти

хх хх хх хх

UIN

UIN відправника

Змінна

0 або більше параметрів

В таблиці 2 вказано, як заповнюється поле даних пакету UDP при передачі від сервера до клієнта.

Довжина

Значення

Назва

Опис

2 байти

02 00

VERSION

Версія протоколу ІР

2 байти

хх хх

COMMAND

Код функції

2 байти

хх хх

SEQ_NUM

Порядковий номер

Змінна

0 або більше параметрів

Поле VERSION присутнє у всіх пакетах і являється ідентифікатором того, що це пакет ICQ.

Поле SEQ_NUM містить порядковий номер пакету. Всі пакети повинні мати унікальний порядковий номер за винятком випадку перенадсилання пакету . Це поле використовується для відслідкування втрати чи дублювання пакетів. Зазвичай з кожним пакетом SEQ_NUM збільшується на 1. Сервер та клієнт ведуть нумерацію пакетів, що не пересікається. Тобто порядковий номер пакету від сервера ніяк не зв'язаний з порядковими номерами пакетів від клієнта. Сервер починає відлік з 00 00. Клієнт починає відлік з 01 00.

Поле COMMAND при пересиланні повідомлення від клієнта серверу може приймати значення, наведені в таблиці 3.

Значення

Найменування

Опис

0А 00

ACK

Підтвердження

0Е 01

SEND_MESSAGE

Відіслати повідомлення через сервер

E8 03

LOGIN

Зареєструватися на сервері

06 04

CONTACT_LIST

Передати серверу «список контактів»

1A 04

SEARCH_UIN

Шукати користувача за UIN

24 04

SEARCH_USER

Шукати користувача за іменем

60 04

INFO_REQ

Запит основної інформації про користувача

6A 04

EXT_INFO_REQ

Запит розширеної інформації про користувача

9C 04

STATUS_CHANGE

Користувач змінив свій статус

28 05

LOGIN_2

Відсилається під час реєстрації на сервері

0A 05

UPDATE_INFO

Оновити основну інформацію про користувача

3C 05

ADD_TO_LIST

Користувач додається в «список контактів»

FC 03

NEW_USER_REG

Зареєструвати нового користувача

A6 04

NEW_USER_INFO

Відсилається основна інформація про нового користувача

Поле COMMAND при пересиланні повідомлення від сервера клієнту може приймати значення, наведені в таблиці 4.

Значення

Найменування

Опис

0А 00

ACK

Підтвердження

5A 00

LOGIN_REPLY

Відіслати повідомлення через сервер

6E 00

USER_ONLINE

Зареєструватися на сервері

78 00

USER_OFFLINE

Передати серверу «список контактів»

8C 00

RECEIVE_MESSAGE

Шукати користувача за UIN

DC 00

END_OF_SEARCH

Шукати користувача за іменем

18 01

INFO_REPLY

Запит основної інформації про користувача

22 01

EXT_INFO_REPLY

Запит розширеної інформації про користувача

A4 01

STATUS_UPDATE

Користувач змінив свій статус

E0 01

UPDATE_REPLY

Відсилається під час реєстрації на сервері

C8 00

UPDATE_EXT_REPLY

Оновити основну інформацію про користувача

46 00

NEW_USER_UIN

Користувач додається в «список контактів»

B4 00

NEW_USER_REPLY

Зареєструвати нового користувача

Повідомлення від клієнта серверу

ACK(0А 00) - підтвердження.

Параметрів немає.

На відміну від інших команд, поле SEQNUM містить порядковий номер повідомлення, прийом якого підтверджується. Прийом цього пакету не повинен підтверджуватися.

LOGIN_REPLY(5А 00) - відповідь при реєстрації на ICQ сервері.

Параметри:

Довжина

Значення

Ім'я

Опис

4 байти

хх хх хх хх

UUSER_UIN

UIN користувача

4 байти

хх хх хх хх

USER_IP

ІР користувача

2 байти

хх хх

LOGIN_SEQ_NUM

Порядковий номер запиту на реєстрацію

4 байти

01 00 01 00

X1

Невідомо

4 байти

хх 00 16 00

X2

Невідомо

4 байти

8С 00 00 00

X3

Невідомо

4 байти

78 00 05 00

X4

Невідомо

6 байт

0А 00 05 00 01 00

X5

Невідомо

RECEIVEMESSAGE (DC 00) - повідомлення користувачу, передане через сервер.

Параметри:

Довжина

Значення

Ім'я

Опис

4 байти

хх хх хх хх

REMOTE_UIN

UIN відправника

2 байти

хх хх

YEAR

Рік посилання повідомлення

1 байт

хх

MONTH

Місяць посилання повідомлення

1 байт

хх

DAY

День посилання повідомлення

1 байт

хх

HOUR

Година посилання повідомлення

1 байт

хх

MINUTE

Хвилина посилання повідомлення

2 байти

хх хх

TYPE

Тип повідомлення

2 байти

хх хх

LENGTH

Довжина тексту повідомлення

змінна

MESSAGE

Текст повідомлення. ASCIIZ рядок

Поле TYPEможе приймати наступні значення:

01 00 - нормальне повідомлення;

04 00 - повідомлення є Інтернет-адресою;

0С 00 - повідомлення про те, що користувач був доданий в список контактів.

INFO_REPLY (18 01) - основна інформація про користувача.

Довжина

Значення

Ім'я

Опис

2 байти

хх хх

INFO_SEQ_NUM

Порядковий номер запиту

4 байти

хх хх хх хх

REMOTE_UIN

UIN користувача

2 байти

хх хх

LENGTH

Довжина «нікнейму»

Змінна

NICK_NAME

«Нікнейм». ASCIIZ рядок

2 байти

хх хх

LENGTH

Довжина імені

Змінна

FIRST_NAME

Ім'я. ASCIIZ рядок

2 байти

хх хх

LENGTH

Довжина прізвища

Змінна

LAST_NAME

Прізвище. ASCIIZ рядок

2 байти

хх хх

LENGTH

Довжина електронної адреси

Змінна

E_MAIL

Електронна адреса. ASCIIZ рядок

1 байт

хх

AUTHORIZE

Необхідність авторизації

Комунікація між двома клієнтами

Коли користувач намагається відіслати повідомлення іншому користувачу, клієнтська програма перевіряє, чи встановлено ТСР з'єднання з віддаленим користувачем. У випадку наявності такого з'єднання, воно буде використане для передачі повідомлень. В іншому випадку з серверу запитується ІР адреса і порт іншого користувача і робиться спроба встановити ТСР з'єднання. Зазвичай порт береться в діапазоні 1200-1300. Після встановлення з'єднання відсилається повідомлення CHANNEL_INIT. Після цього кожен раз для посилання текстового повідомлення створюється пакет з повідомленням CHANNEL_MESSAGE. Отримання кожного пакету має бути підтверджено повідомленням CHANNEL_ACK.

Взаємодія з використанням протоколу ТСР так як і з використанням протоколу UDP базується на посиланні незалежних пакетів.

РОЗДІЛ 2. АЛГОРИТМ ПРОГРАМИ

У розділі описані алгоритми, за якими були втілені механізми виконання поставленої задачі. Програма, що реалізовує передачу, складається з двох додатків - клієнтської частини та серверної частини. В даній роботі розглянеться додаток сервера. Додаток клієнта розглянеться в роботі іншого студента (Бусел А.).

Загальний вигляд алгоритму додатка сервера

Блок-схема показує етапи створення сокету, очікування клієнта, підключення (рис. 1).

Рис. 1 - Блок - схема роботи додатку «сервер»

2.1 Алгоритм циклічної передачі даних

Циклічна передача повідомлень починається з читання команди клієнта, а далі відбувається почергова передача повідомлень. Блок - схема циклічної передачі повідомлень зображена на рис. 2.

Рис. 2 - Блок - схема циклічного обміну даними зі сторони сервера

2.2 Алгоритм перекодування даних

Перекодування даних складається з двох частин. Перша частина - перекодування отриманої команди, нікнеймів та самого повідомлення у байти для того, щоб їх можна було обробляти. Друга частина - перетворення байтів команди, нікнеймів та повідомлення у текстовий формат для того, щоб користувач міг їх прочитати.

Блок-схема перекодування даних зображена на Рис. 3.

Рис. 3 - Блок-схема перетворення отриманих даних у байти

РОЗДІЛ 3. ОСОБЛИВОСТІ РЕАЛІЗАЦІЇ

3.1 Вибір мови та середовища програмування

C# - це об'єктно-орієнтована мова програмування з безпечною системою типізації для платформи .NET. синтаксис C# близький до С++. Мова має строгу статичну типізацію, підтримує поліморфізм, перевантаження операторів, вказівники на функції-члени класів, атрибути, події, властивості, винятки, коментарі у форматі XML.

Мова C# розроблялася як мова програмування прикладного рівня для CLR, і як така, залежить, насамперед, від можливостей самої CLR. Це стосується, перш за все, системи типів C#, яка відображає BCL. Присутність або відсутність тих чи інших виразних особливостей мови диктується тим, чи може конкретна мовна особливість бути трансльована у відповідні конструкції CLR. Так, з розвитком CLR від версії 1.1 до 2.0 значно збагатилася і сама мова C#. CLR надає C#, як і всім іншим .NET-орієнтованим мовам, багато можливостей, яких немає в «класичних» мовах програмування. Наприклад, збірка сміття не реалізована в самій мові C#, а проводиться CLR для програм, написаних на C# так само, як це робиться для програм на VB.NET, J# та ін.

MicrosoftVisualStudio - лінійка продуктів компанії Майкрософт, що включають інтегроване середовище розробки програмного забезпечення та ряд інших інструментальних засобів. Дані продукти дозволяють розробляти як консольні додатки, так і додатки з графічним інтерфейсом, в тому числі з підтримкою технології Windows Forms, а також веб-сайти, веб-додатки, веб-служби як в рідному, так і в керованому кодах для всіх платформ, підтримуваних Microsoft Windows, Windows Mobile, Windows CE,. NETFramework,. NETCompactFramework і MicrosoftSilverlight. VisualStudio включає в себе редактор вихідного коду з підтримкою технології IntelliSense і можливістю найпростішого рефакторинга коду. Вбудований відладчик може працювати як відладчик рівня вихідного коду, так і як відладчик машинного рівня. Решта вбудовувані інструменти включають в себе редактор форм для спрощення створення графічного інтерфейсу програми, веб-редактор, дизайнер класів і дизайнер схеми бази даних. Visual Studio дозволяє створювати і підключати сторонні додатки (плагіни) для розширення функціональності практично на кожному рівні, включаючи додавання підтримки систем контролю версій вихідного коду (як наприклад, Subversion і Visual SourceSafe), додавання нових наборів інструментів (наприклад, для редагування та візуального проектування коду на предметно-орієнтованих мовах програмування або інструментів для інших аспектів циклу розробки програмного забезпечення (наприклад, клієнт Team Explorer для роботи з Team Foundation Server). Visual Studio 2010 (кодове ім'я Hawaii, для Ultimate - Rosario; внутрішня версія 10.0) - випущена 12 квітня 2010 разом с. NET Framework 4.0. Visual Studio включає підтримку мов C # 4.0 і Visual Basic. NET 10.0, а також мови F #, який був відсутній в попередніх версіях.

3.2 Архітектура додатка на базі сокетів

Розроблений додаток має архітектуру типу «клієнт-сервер» на основі сокетного з'єднання.

Клієнт-сервер - це вид розподіленої системи, в якій є сервер, що виконує запити клієнта, причому сервер і клієнт спілкуються між собою з використанням того чи іншого протоколу. В даному випадку використовуються протоколи сокету. Під клієнтом розуміється програма, що використовує ресурси, а під сервером (англійською - слуга) програма, що обслуговує запити клієнICQтів на отримання ресурсів певного виду.

Сокети (англ. socket поглиблення, гніздо, роз'єм) - це назва програмного інтерфейсу для забезпечення інформаційного обміну між процесами. Процеси при такому обміні можуть виконуватися як на одній ЕОМ, так і на різних ЕОМ, пов'язаних між собою мережею. Сокет - абстрактний об'єкт, що представляє кінцеву точку з'єднання.[7]

Сокет - це один кінець двостороннього каналу зв'язку між двома програмами, які працюють в мережі. Реалізація сокетів забезпечує інкапсуляцію протоколів мережевого і транспортного рівнів.

Існують два види сокетів: потокові та дейтаграмні.

Потокові сокети - це сокет з встановленим з'єднанням, який складається з потоку байтів, який може бути двонаправленим, тобто через цю кінцеву точку додаток може і передавати і отримувати дані. Потоковий сокет гарантує виправлення помилок, обробляє доставку і зберігає послідовність даних. Потокові сокети досягають такого рівня якості за рахунок використання протоколу TransmissionControlProtocol (TCP).TCP забезпечує поступлення даних на іншу сторону в потрібній послідовності і без помилок.

Для цього типу сокетів шлях формується до початку передачі повідомлень. Цим гарантується, що дві сторони, які беруть участь у взаємодії, приймають і відповідають. Якщо дані повинні гарантовано доставлятися іншій стороні або вони мають великий розмір і, якщо надійність зв'язку між двома додатками має першочергове значення, то використання саме потокових сокетів є більш прийнятним, ніж дейтаграмних. (Кровчик).

Слід розрізняти клієнтські та серверні сокети. Клієнтські сокети грубо можна порівняти з кінцевими апаратами телефонної мережі, а серверні - з комутаторами. Клієнтський додаток (наприклад, браузер) використовує лише клієнтські сокети, а серверний (наприклад, веб-сервер, якому браузер посилає запити) - як клієнтські, так і серверні сокети.

Кожен процес може створити слухаючий сокет (серверний сокет) і прив'язати його до будь-якого порту комп'ютера. Той хто слухає процес зазвичай знаходиться в циклі очікування, тобто прокидається при появі нового з'єднання. При цьому зберігається можливість просто перевірити наявність з'єднань на даний момент, встановити тайм-аут для операції і так далі. При створенні сокету, необхідно визначити три параметри: стиль взаємодії, простір імен, і протокол. Стиль взаємодії контролює, як сокет обробляє дані, що передаються, і визначає кількість партнерів взаємодії. Через сокети дані передаються блоками. Стиль взаємодії визначає, як ці пакети будуть оброблені і як вони передаються від відправника до одержувача. Стилі з'єднання гарантують доставку всіх пакетів у тому порядку, в якому вони були відправлені. Якщо під час передачі пакети були втрачені або доставлені в неправильному порядку, одержувач автоматично відправляє запит на їх повторну передачу. Цикл життя сервера складається зі створення сокету, прив'язки сокету до адреси, виклику listen, що дозволяє з'єднання з сокетом, виклику accept, що приймає вхідні з'єднання, і потім закриття сокета. Дані не читаються і не записуються безпосередньо через сокет сервера, замість цього, кожен раз коли програма приймає нове з'єднання, ОС створює окремий сокет, використовується при передачі даних по цьому з'єднанню. Архітектура з'єднання показана на рис. 4.

пейджер програма сервер сокет

Рис. 4 - Зображення архітектури «клієнт - сервер» на основі сокетів

3.3 Протокол взаємодії додатків клієнта та сервера

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

Якщо сервер отримує повідомлення про те, що з'явився новий клієнт (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)).

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

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 в стан прослуховування.

ВИСНОВКИ

В результаті виконання курсової робити були зроблені наступні висновки:

Була освоєна архітектура «клієнт - сервер» на основі асинхронних сокетів протоколу ТСР.

Було освоєно методи обміну повідомленнями та методи передачі файлів.

Досліджена робота інтернет пейджера ICQ.

Побудовано алгоритм.

Розроблено додаток.

Додаток був успішно протестований і проведений експеримент.

Додатки дають змогу звичайним користувачам передавати текстові повідомлення в мережі та отримувати списки користувачів, які на даний момент підключені до сервера.

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

1. Microsoft Developer Network. URL: http://msdn.microsoft.com/ru-ru/

2. Огляд програми ICQ. URL: http://iserverd.khstu.ru/docum_ext/icqkurs.htm#6

3. Эндрю Кровчик, Винод Кумар, Номан Лагар Сетевое програмирование для профессионалов. - М. Издательство «Лори», 2004.

4. Форум програмістів. URL: http://www.codenet.ru/

5. Вільна енциклопедія Вікіпедія. URL: http://www.wikipedia.org/

6. URL: http://www.codeproject.com/

7. Офіційний сайт ICQ. URL: http://www.icq.com/ru

8. Статті про сокет програмування на C#. URL: http://aspalliance.com/ 1563_Socket_Programming_in_C.all

9. URL: http://www.codeguru.com

10. Стаття про асинхронне сокет програмування. URL: http://www.c-sharpcorner.com/UploadFile/dottys/SocketProgDTRP11222005023030AM/SocketProgDTRP.aspx

ДОДАТОК А

Інструкція по роботі з додатком

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

Для роботи додатка необхідно, щоб був завантажений додаток сервера.

Користувач повинен запустити клієнтський додаток, в перше поле ввести свій нікнейм, в друге - ІР адресу серверу, натиснути «Так».

В полі внизу форми ввести повідомлення, яке необхідно передати, справа обрати клієнта, якому це повідомлення має бути доставлено та натиснути кнопку «Відправити».

Для виходу з додатка натиснути на «хрестик» в верхньому правому куті форми та натиснути кнопку «Да», щоб підтвердити вихід або кнопку «Нет» для скасування виходу.

ДОДАТОК Б

Тестування програми

Тестування проводилося на ПК з ОС Windows 7. Тип системи - 32-розрядна ОС. Процесор , частота GHz. Об'єм оперативної пам'яті - ГБ.

Для тестування було запущено віртуальну машину VMware Workstation з встановленими на ній ОС Windows 7, Windows XP. Додаток сервера був запущений на ОС Windows XP, додатки клієнтів на обох ОС на віртуальній машині та на основній робочій ОС комп'ютера.

Запуск додатка сервера

Додаток сервера, запущений на ОС Windows XP:

Запуск додатка клієнта

Реєстрація нового клієнта на ОС Windows 7. В полі ІР серверу вказуємо ІР серверу, запущеного на ОС Windows ХР.

Вікно клієнта онлайн виглядає так:

Поява нових клієнтів

При появі нових клієнтів у кожного користувача оновлюється список, розташований в правій частині вікна:

Оновлення лога сервера при появі нових клієнтів онлайн:

Пересилання повідомлень

При пересиланні повідомлень вікна користувачів виглядають так:

Користувач отримав повідомлення:

При пересиланні повідомлень вся інформація фіксується на сервері:

Вихід з програми

Якщо будь-який користувач виходить з додатка, він автоматично видаляється зі списку тих, хто онлайн у всіх інших користувачів. Також це фіксується на сервері:

Размещено на Allbest.ru


Подобные документы

  • Аналіз технологій розробки систем моніторингу і управління та різноманітності мов програмування. Створення проекту структури Інтернет-магазину, розробка бази даних, UML-діаграми та алгоритму виконання функцій додатку. Результати тестування програми.

    дипломная работа [1,6 M], добавлен 08.06.2015

  • Інтернет-магазин як веб-сайт, що рекламує товар, приймає замовлення на покупку. Процес створення програмного продукта від викладення вимог до написання коду, відладки та тестування. Потреби адміністраторів інтернет-магазину. Мова програмування сайту.

    курсовая работа [1,0 M], добавлен 25.11.2010

  • Вибір мови програмування та середовища розробки. Основні можливості мови php та сервера MySQL. Основні переваги середовища розробки NetBeans. Macromedia Dreamweaver як один з популярних середовищ розробки сайтів. Розробка програмного коду сайту.

    контрольная работа [3,0 M], добавлен 16.02.2013

  • Вивчення технологій програмування Internet-сайтів. Розробка інтерактивного інтерфейсу Web-додатків засобами бібліотеки Codeigniter. Інтернет-проекти на основі Ajax-технології. Обробка запиту засобами Codeigniter. Асинхронний обмін даними способами Ajax.

    курсовая работа [1,3 M], добавлен 12.06.2014

  • Поняття фінансових інтернет-послуг. Підходи до класифікації за сферою надання і функціональною спрямованістю послуг. Інтернет-банкінг та інтернет-трейдинг: електронне управління рахунками, коштами та цінними паперами. Страхування через Інтернет.

    контрольная работа [22,1 K], добавлен 26.07.2009

  • Серверна мова програмування PHP. База даних MySQL. Мова та стандарти XML. Рівні та способи взаємодії засобів розробки. Засоби трансформації XML. Розробка інтернет-додатку з використанням PHP, MYSQL, XML. Розрахунок трудомісткості створення системи.

    дипломная работа [1,8 M], добавлен 19.08.2012

  • Характеристики методів стискання інформації. Дворівневе кодування, алгоритм Лемпеля-Зіва. Блок-схема алгоритму кодування. Вибір мови, середовища програмування. Опис інтерфейсу, тестування програми. Бібліотеки, які використовуються при написанні програми.

    курсовая работа [728,9 K], добавлен 17.01.2014

  • Загальне поняття про Інтернет-магазини, їх характерні особливості. Специфіка розвитку Інтернет-комерції в Україні. Оцінка та аналіз діяльності Інтернет-магазину "Rozetka", його переваги та недоліки. Проектування сайта магазину "Оfficetehnik.ua".

    курсовая работа [2,7 M], добавлен 03.06.2013

  • Історія розвитку мережі Інтернет, можливості її практичного використання. Місце України у формуванні ресурсів "всесвітньої павутини". Правові основи використання Інтернету в Україні. Види доступу до мережі. Мережа Інтернет в Україні: сучасний стан.

    курсовая работа [145,9 K], добавлен 07.10.2012

  • Основні відомості про програми-браузери. Веб-браузери – програмне забезпечення для комп’ютера, під’єднаного до мережі інтернет, що дає можливість працювати з текстом, малюнками або іншою інформацією на веб-сторінці. Використання браузерів в офісі.

    курсовая работа [3,2 M], добавлен 17.05.2019

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.