записів не існує. При використанні TCP цей протокол бере на себе розбиття переданих даних на пакети відповідного розміру, відправку їх в мережу і збірку їх на іншій стороні. Додаток знає тільки, що воно відправляє на рівень TCP певне число байтів і інша сторона отримує ці байти. У свою чергу TCP ефективно розбиває ці дані на пакети відповідного розміру, отримує ці пакети на іншій стороні, виділяє з них дані і об'єднує їх разом.
Потоки базуються на явних сполуках: сокет А запитує з'єднання з сокетом В, а сокет У або погоджується із запитом на встановлення з'єднання, або відкидає його.
Якщо дані повинні гарантовано доставлятися іншій стороні або розмір їх великий, потокові сокети переважніше дейтаграмним. Приміром, сервер електронної пошти є додатком, що повинно приносити вміст у правильному порядку, без дублювання і пропусків.
дейтаграмному сокети іноді називають сокетами без організації з'єднань, т. е. ніякого явного з'єднання між ними не встановлюється - повідомлення відправляється вказаною сокету і, відповідно, може виходити від вказаного сокета.
Потокові сокети в порівнянні з дейтаграмному дійсно дають більш надійний метод, але для деяких додатків накладні витрати, пов'язані з установкою явного з'єднання, неприйнятні (наприклад, сервер часу доби, що забезпечує синхронізацію часу для своїх клієнтів). Зрештою на встановлення надійного з'єднання з сервером потрібен час, яке просто вносить затримки в обслуговування, і завдання серверного додатку не виконується. Для скорочення накладних витрат потрібно використовувати дейтаграмному сокети.
Використання дейтаграмним сокетів вимагає, щоб передачею даних від клієнта до сервера займався User Datagram Protocol (UDP). У цьому протоколі на розмір повідомлень накладаються деякі обмеження, і на відміну від потокових сокетів, які вміють надійно відправляти повідомлення сервера-адресату, дейтаграмному сокети надійність не забезпечують. Якщо дані загубилися десь в мережі, сервер не повідомить про помилки.
Крім двох розглянутих типів існує також узагальнена форма сокетів, яку називають необроблюваних або сирими. Головна мета використання сирих сокетів полягає в обході механізму, за допомогою якого комп'ютер обробляє TCP/IP. Це досягається забезпеченням спеціальної реалізації стека TCP/IP, замісної механізм, наданий стеком TCP/IP в ядрі - пакет безпосередньо передається додатку і, отже, обробляється набагато ефективніше, ніж при проході через головний стекпротоколів клієнта.
За визначенням, сирої сокет - це сокет, який приймає пакети, обходить рівні TCP і UDP в стеку TCP/IP і відправляє їх безпосередньо програмі.
При використанні таких сокетів пакет не проходить через фільтр TCP/IP, тобто ніяк не обробляється, і постає у своїй сирої формі. У такому разі обов'язок правильно обробити всі дані і виконати такі дії, як видалення заголовків і розбір полів, лягає на отримує додаток - все одно, що включити в додаток невеликий стек TCP/IP.
Сирі сокети головним чином використовуються при розробці спеціалізованих низькорівневих протокольних додатків. Наприклад, такі різноманітні утиліти TCP/IP, як trace route, ping або arp, використовують сирі сокети.
Сокети також бувають блокуючими і Неблокуючий raquo ;. Блокуючі сокети змушують ваше додаток очікувати доти, поки дані стануть доступні, у той час як Неблокуючий сокети цього не роблять. Хоча всі сокети двунаправлен, все ж існує різниця між сокетами клієнта і сервера. Серверний сокет прослуховує певний порт, а клієнтський підключається до сервера. Після того, як було встановлено з'єднання починається обмін даними.
Рис.1 Модель Клієнт-сервер
2. Блок-схема роботи програми
Робота програми автоматичного сервісу пошуку може бути представлена ??у вигляді блок-схеми, реалізованої як результат взаємодії користувача з програмою.
Користувач починає роботу з програмою послідовно запустивши два файли server1.py і client1.py raquo ;. Ця дія представлено блоком Запустити програму
У вікні клієнта користувачеві пропонується ввести ключове слово пошуку (прізвище) .Данная дію виглядає як блок Введіть прізвище .
Після цього програма здійснює перевірку введених даних на наявність їх в базі. Цей блок умови представлений як Чи знайдено результат? Raquo;.
Якщо результат не знайдений ( Ні ), то програма повідомляє про відсутність даних в базі і користувач може повторити спробу.
Якщо результат знайдений ( Так ), то програма виводить його у вікні клієнта. Користувач може продовжити пошук. На блок-схемі це умова виглядає як Продовжи...