Сокет (програмний інтерфейс)

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

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

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


Принципи сокетів

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

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

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



Перегляд цього шаблону Межпроцессное взаємодія в інформатиці
Методи Файл Memory-mapped file Обмін повідомленнями Message queue and mailbox Іменований канал Anonymous pipe Pipe Семафор ( критична секція, мьютекс, фьютекс) Shared memory Сигнал Сокет Unix domain socket
Вибрані протоколи
і стандарти
Apple events COM + CORBA D-Bus DCE DCOP DIPC ICE LINX ONC RPC POSIX (різні методи) SOAP Thrift TIPC XML-RPC