Сокет

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Сокети (англ. socket - заглиблення, гніздо, роз'єм) — назва програмного інтерфейсу для забезпечення обміну даними між процесами . Процеси при такому обміні можуть виконуватися як на одній ЕОМ, так і на різних ЕОМ, пов'язаних між собою мережею. Сокет - абстрактний об'єкт, що представляє кінцеву точку з'єднання.

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

Інтерфейс сокетів вперше з'явився в BSD Unix. Програмний інтерфейс сокетів описаний в стандарті POSIX.1 І в тій чи іншій мірі підтримується усіма сучасними операційними системами.

Принципи сокетів[ред.ред. код]

Кожен процес може створити слухаючий сокет (серверний сокет) і прив'язати його до якогось порту операційної системи (в UNIX непривілейовані процеси не можуть використовувати порти менше 1024). Процес, що слухає, зазвичай знаходиться в циклі очікування, тобто прокидається при появі нового з'єднання. При цьому зберігається можливість перевірити наявність з'єднань у цей час, встановити тайм-аут для операції тощо.

Кожен сокет має свою адресу. ОС сімейства UNIX можуть підтримувати багато типів адрес, але обов'язковими є INET-адреса і UNIX-адреса. Якщо прив'язати сокет до UNIX-адреси, то буде створено спеціальний файл (файл сокета) за заданим шляхом, через який зможуть повідомлятися будь-які локальні процеси шляхом читання / запису з нього (див. Доменний сокет Unix). Сокети типу INET доступні з мережі і вимагають виділення номера порту.

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

Див. також[ред.ред. код]