У бібліотеці класів Java є дуже зручний засіб, за допомогою яких можна організувати взаємодію між додатками Java і аплетами, що працюють як на одному і тому ж, так і на різних вузлах мережі TCP / IP. Це засіб, що народилося в світі операційної системи UNIX, - так звані сокети (sockets).
Що таке сокети?
Ви можете уявити собі сокети у вигляді двох розеток, до яких включено кабель, призначений для передачі даних через мережу. Переходячи до комп'ютерної термінології, скажімо, що сокети - це програмний інтерфейс, призначений для передачі даних між додатками.
Що ж стосується типів сокетів, то їх два - потокові та датаграммной.
За допомогою потокових сокетів ви можете створювати канали передачі даних між двома додатками Java у вигляді потоків, які ми вже розглядали у другому розділі. Потоки можуть бути вхідними або вихідними, звичайними або форматувати, з використанням або без використання буферизації. Скоро ви переконаєтеся, що організувати обмін даними між додатками Java з використанням потокових сокетів не важче, ніж працювати через потоки зі звичайними файлами.
Зауважимо, що потокові сокети дозволяють передавати дані тільки між двома додатками, так як вони припускають створення каналу між цими додатками. Однак іноді потрібно забезпечити взаємодію декількох клієнтських додатків з одним серверним. В цьому випадку ви можете або створювати в серверному додатку окремі завдання і окремі канали для кожного клієнтського додатка, або скористатися датаграммной сокетами. Останні дозволяють передавати дані відразу всіх вузлів мережі, хоча така можливість рідко використовується і часто блокується адміністраторами мережі.
Причина отстутствия гарантії доставки даних при використанні датаграммной сокетов полягає в використанні такими сокетами протоколу UDP, який, в свою чергу, заснований на протоколі з негарантованої доставкою IP. Потокові сокети працюють через протокол гарантованої доставки TCP.