теоретичне введення

З використанням Winsock

Підготовлено р.А.Гараевим для СРС до іспиту

Winsock - це мережевий інтерфейс прикладного програмування, реалізований на всіх платформах Win32, основний інтерфейс доступу до різних базовим мережевим протоколам. Інтерфейс успадкував багато від реалізації Berkeley (BSD) Sockets на платформах UNIX. У середовищах Win32 він став абсолютно незалежним від протоколу, особливо з випуском Winsock 2. ТермінСокети (sockets) використовується для позначення описателей постачальників транспорту. У Win32 сокет відрізняється від описателя файлу, а тому представлений окремим типом - SOCKET. У технічній літературі можна знайти різні переклади цього слова - їх називають і гніздами, і роз'ємами, соединителями, патронами і т. Д. З огляду на відсутність усталеного російськомовного терміна, в цьому матеріалу sockets будуть іменуватися сокетами без будь-якого перекладу.

З позицій еталонної моделі OSI інтерфейс Winsock розташований між сеансовим і транспортним рівнями. Під управлінням Windows прикладної, представницький і сеансовий рівні, в основному відносяться до вашого додатком.

Програмування з застосуванням сокетов досить нескладно саме по собі, але, на жаль, порівняно поверхово описано в поширеною літературі, а документація Windows Sockets SDK містить безліч помилок, як в технічних описах, так і в демонстраційних прикладах. Крім того, існують значні відмінності реалізацій сокетів в UNIX і в Windows, що створює очевидні проблеми.

Зважаючи на обмеженість обсягу даного опису, основна увага нижче зосереджено, головним чином, на одній версії реалізації сокетів - бібліотеці Winsock 2 і однією мовою програмування - C / C ++ (сказане, як правило, може бути застосовано до Delphi, Perl і т.д.) і одному вигляді гнізд - блокуються синхронних сокетах.

першоджерела

Основний матеріал в вивченні сокетов - Windows Sockets 2 SDK. SDK - це документація, набір заголовків файлів і інструментарій розробника. Документація, незважаючи на недоліки, написана достатня грамотно і дозволяє, хоча і не без зусиль, освоїти сокети навіть без допомоги будь-якої іншої літератури. Більшість книг, наявні на ринку, явно поступаються Microsoft в повноті і продуманості опису. Єдиний недолік SDK - він повністю англійською (для деяких це суттєво).

З інструментарію, що входить в SDK, необхідно, перш за все, виділити утиліту sockeye.exe, яку можна розглядати як "тестовий стенд" розробника. Вона дозволяє в інтерактивному режимі викликати різні сокет-функції і маніпулювати ними.

огляд Winsock

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

Сокети дозволяють працювати з безліччю протоколів і є зручним засобом межпроцессорного взаємодії, але в даному розділі мова буде йти тільки про сокетах сімейства протоколів TCP / IP, що використовуються для обміну даними між вузлами мережі Інтернет. Всі інші протоколи, такі як IPX / SPX, NetBIOS будуть представлені в інших розділах.

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

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

Зауваження: дейтаграммний сокети спираються на протокол UDP, а потокові на TCP.

Схожі статті