Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_m1 / lab_m1.doc
Скачиваний:
67
Добавлен:
07.02.2016
Размер:
2.69 Mб
Скачать

4.8 Рекомендації з виконання роботи

Приведемо кілька порад для спрощення створення додатка. Функції accept, connect, recv є блокуючими, тобто виконання програми затримується на якийсь час, протягом якого не можна виконувати ніяких дій. Ви будете користуватися таким чатом, коли під час очікування повідомлення програма зависає? Рекомендуємо всі блокуючі функції вивести в окремі потоки (TThread), що працюють паралельно із програмою і не приводять до її зависання. У клієнтській частині можна винести в окремий потік прослуховування порту на предмет одержання даних від сервера й обробку одержуваних даних. У серверній частині, створити кілька потоків, що містять у собі функцію accept; при одержанні запиту на підключення, створюється ще один потік, що виконує постійне прослуховування порту на предмет передачі даних знову підключеного клієнта. Таким чином, у серверній частині маємо n+1 потік, де n-кількість клієнтів.

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

  1. Чи підтримувала WinSock 1.1 протокол UDP?

  2. Чи вірно твердження, що функція accept є не блокуючою?

  3. Що виконує функція bind?

  4. Виправте помилку: Socket(MySock, IPPROTOIP, SOCKSTREAM); .

  5. Опишіть загальні дії сервера й клієнта.

  6. Що означає наступний запис: Сonnect(Socket1, Addr1, SizeOf(Addr1));?

  7. Що необхідно зробити, щоб створити серверний сокет?

  8. Для чого використаються потоки?