асист|. каф|. КСМ Ковальов М.П., ст.гр. КСМ-06-1 Пільтяй В.О.

Криворізький технічний університет, Україна

Базові поняття про сокети Windows|

Данна стаття  розглядає|розглядує| ряд|лаву| питань, пов'язаних з поняттям сокет, його призначенням, використанням у Windows|, перевагами Winsock|, а також піднімає питання функцій API| Winsock|.

Загальні|спільне| поняття про сокет

В процесі мережевого|мережного| з'єднання|сполучення| два процеси обмінюються даними. Сокет  (socket|) представляє собою|з'являє|вираженням| абстрактну точку мережевого|мережного| з'єднання|сполучення|, [2] а якщо говорити більш конкретніше, то сокет, є| кінцевою|скінченною| точкою мережевих|мережних| комунікацій. Кожен сокет, що використовується, має тип|типа| і асоційований з|із| ним процес. Сокети існують у середині|всередині| комунікаційних доменів. Домени це абстракції, які мають конкретну структуру адресації і безліч протоколів, які визначають різні типи|типів| сокетів у середині|всередині| домена. Прикладами|зразками| комунікаційних доменів можуть бути: UNIX| домен, Internet| домен, і т.д.

У Internet| домені, сокет – це комбінація IP| адреси і номера порту, яка однозначно визначає окремий мережевий|мережний| процес у всій глобальній мережі|сіті| Internet|. Два сокети, один для хоста|-одержувача, інший для хоста|-відправника, визначають з'єднання|сполучення| для протоколів, орієнтованих на встановлення зв'язку, таких, як TCP|. [3]

Сокети Windows|

         Можливість|спроможність| взаємодії з|із| іншими системами забезпечується в Windows| підтримкою сокетів Windows| Sockets| – сумісного і майже точного аналога сокетів Берклі (Berkeley| Sockets|), що де-факто грають роль промислового стандарту.

        

Оскільки інтерфейс Winsock| повинен відповідати  промисловому стандарту, прийняті у ньому угоди про правила привласнення|присвоєння| імен  і стилі програмування дещо відрізняються від тих, з|із| якими ми звикли|звикалися| стикатися в процесі роботи з|із| функціями Windows|. Слід зазначити|, що Winsock| API| не є|з'являється| частиною|часткою| Win32/64. Крім того, Winsock| надає додаткові функції що не відповідають стандартам; ці функції використовуються лише у разі|в разі| крайньої необхідності. [1]

 

У UNIX| інтерфейс сокетів був вбудований в систему. Інтерфейс Winsock| не входить до складу Windows|, а реалізований у вигляді динамічно завантаженої бібліотеки DLL|. [2]

 

До переваг Winsock| можна віднести наступне|слідуюче|:

·        Перенесення|перенос| вже існуючого коду, написаного для  Berkeley| Sockets| API|, здійснюється безпосередньо.

·        Системи  Windows| легко вбудовуються в мережі|сіті|, що використовують, як версію Ipv4| протоколу TCP/IP, так і версію IPv6|, що поступово розповсюджується|поширюється|.

·        Сокети можуть використовуватися спільно з|із| введенням/виведенням|висновком| Windows|, що перекривається, що, окрім всього іншого, забезпечує можливість|спроможність| масштабування серверів при збільшенні кількості активних клієнтів.

·        Сокети можна розглядати,|розглядувати| як дескриптори (типу|типа| HANDLE|) файлів при використанні функцій ReadFile| і WriteFile|, та з|із| деякими обмеженнями, при використанні інших функцій. Ця можливість|спроможність| виявляється|опиняється| зручною в тих випадках, коли потрібне використання асинхронного введення/виведення|висновку| і портів завершення введення/виведення|висновку|.

·        Існують також додаткові, непереносимі|непереносні| розширення. [1]

Функції сокетів

API| Winsock| містить|утримує| набір функцій. Специфікація Winsock| розбиває їх на три групи:

·        функції сокетів в стилі Берклі, включені в Winsock| API|;

·        функції для роботи з|із| базами даних, що дозволяють програмам отримувати|одержувати| інформацію про імена доменів, протоколи і т.д.

·        функції, що розподіляють набір функцій інтерфейсу сокетів Берклі.

 

Крім того, всі функції можна розділити на дві великі групи: блокуючі і не блокуючі.

 

Блокуюча функція примушує|заставляє| програму, що викликала|спричиняла| її, чекати закінчення мережевої|мережної| операції введення/виведення||висновку|. Як приклад|зразок| приведемо декілька функцій цієї групи:

 

аccept – підтверджує запит на встановлення з'єднання. Утворює новий сокет і сполучає його з видаленим комп'ютером, що запрошує з'єднання. Початковий сокет повертається в стан прийому вхідних запитів.

closesocket – закриває одну сторону в з'єднанні сокетів;

connect – встановлює з'єднання на вказаному сокеті;

recv – приймає дані із сполученого сокета;

send – передає дані через сполучений сокет;

sendto – передає дані через сполучений або не сполучений сокет; [2]

 

Не блокуюча функція не примушує|заставляє| програму, що викликала|спричиняла| її, чекати закінчення мережевої|мережної| операції введення/виведення||висновку||чекання|. Вони перетворюють інформацію або мають справу|річ| з|із| локальним сокетом. Як приклад|зразок| приведемо декілька функцій цієї групи:

 

bind – привласнює ім'я неініціалізованому сокету;

getsockname – повертає ім'я вказаного локального сокета;

getsockopt – повертає опції вказаного сокета;

htonl – перетворює порядок байтів в 32-розрядному числі з машинно-незалежного в мережевий;

htons – перетворює порядок байтів в 16-розрядному числі з машинно-незалежного в мережевий;

inet_addr – перетворює рядок з IP-адресою у форматі десяткового з крапкою в 32-розрядне число в мережевому форматі;

inet_ntoa – перетворює IP-адрес у формат десяткового з крапкою;

listen – встановлює вказаний сокет в стан прослуховування запитів на вхідне з'єднання. Сама функція не проводить мережевих операцій введення/виведення;

ntohl – перетворює порядок байтів 32-розрядного числа з мережевого в машинно-залежний;

setsockopt – встановлює опції сокета;

shutdown – закриває одну сторону видаленого з'єднання;

socket – утворює точку мережевого з'єднання і повертає дескриптор сокета. [2]

Висновоки|укладення|

У даній статті були розглянуті| базові поняття про сокети. Інтерфейс Windows| Sockets| надає можливість|спроможність| використання API|, промислового стандарту, що відповідає вимогам, та гарантує роботу програм на різному устаткуванні|обладнанні| і майже повну|цілковиту| переносимість на рівні початкового|вихідного| коду. WinSock| здатний|здібний| підтримати практично будь-який мережевий|мережний| протокол, проте|однак| в більшості випадків застосовується протокол TCP/IP. [1]

Література

1.                 Джонсон М. Харт. Системное программирование в среде Windows, 3-е издание.: Пер. с англ. – М.: Издательский дом «Вильямс», 2005. – 592с.: ил. – Парал. тит. англ.

2.                 Интерфейс сокетов Windows http://home.tula.net

3.                 Программирование сокетов http://www.codenet.ru