русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Приклад використання сокета


Дата додавання: 2014-11-28; переглядів: 867.


 

Взаємодію поміж процесами за допомогою сокетів можна продемонструвати на прикладі домена UNIX. Функціональність розподіленої системи у цьому разі полягає в тому, що клієнт надсилає серверові повідомлення, сервер переспрямовує його клієнтові, який і виводить його після отримання на термінал, оскільки у домені UNIX сокети дейтаграм практично не відрізняються від сокетів потоку. Як адресу сервера можна зазначити ім’я файла ./echo.server й припустити, що клієнти знають цю адресу. Сервер зв’язує створений сокет з цією локальною адресою і в такий спосіб реєструється в системі. З цього моменту він готовий до приймання та опрацьовування повідомлень. Сервер починає нескінченний цикл, очікуючи на повідомлення від клієнтів та блокуючись на виклику recvfrom(2). При отриманні повідомлення сервер надсилає його клієнтові, за допомогою виклику sendto(2). У додатку наведено програми серверної та клієнтської сторін. Клієнт створює сокет дейтаграм та зв’язує його зі своєю унікальною адресою, що зумовлюється унікальністю імені файла. Оскільки водночас можуть працювати кілька клієнтів, виникає проблема отримання унікального імені. Для її розв’язання використовується функція mktemp(3c), яка дозволяє за заданим шаблоном /tmp/clnt.XXXX та на підставі ідентифікатора поточного процесу отримати унікальне ім’я на заміну символів ХХХХ. Зв’язування сокета дозволяє при відправлянні неявно зазначати його “адресу відправника”, тому сервер може повернути повідомлення. У додатку Б (Лістинг1 та Лістинг 2) наведено вихідні тексти програм, що вони зреалізовують взаємодію поміж процесами, яка грунтується на сокетах дейтаграм у домені UNIX.

 

Контрольні запитання

 

1 Які комунікаційні характеристики забезпечують сокети?

2 Які основні типи сокетів зреалізовано в BSD UNIX?

3 Який системний виклик створює сокет та який він має опис?

4 Що таке комунікаційні домени та які домени Ви знаєте?

5 Який зв’язок існує поміж комунікаційними доменами та підтримуваними ними сокетами?

6 Якими параметрами схарактеризовується кожний комунікаційний канал?

7 Які системні виклики використовуються на серверному та клієнтському боці при створенні віртуального каналу з попереднім встановленням з’єднання?

8 Які системні виклики використовуються на серверному та клієнтському боці за взаємодії, яка грунтується на дейтаграмах?

9 Яку довжину і формати мають адреси сокетів у різних доменах?

10 Яку адресу слід обирати для сервера й чому?

 


<== попередня лекція | наступна лекція ==>
Програмний інтерфейс сокетів | Основні положення


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн