Junior
49
questionbank

Что такое сокет?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Сокет (socket) — это абстракция конечной точки двунаправленного сетевого взаимодействия между двумя программами через сеть.

В контексте сетевого программирования, сокет представляет собой программный объект, который:

  • Идентифицируется парой IP-адрес + порт.
  • Является интерфейсом для отправки и приема данных.
  • Предоставляет способ для процессов обмениваться информацией, независимо от того, находятся ли они на одной или разных машинах.

Существуют два основных типа сокетов в зависимости от используемого протокола транспортного уровня:

  1. TCP-сокеты (потоковые):
    • Используют протокол TCP.
    • Обеспечивают надежную, ориентированную на соединение потоковую передачу данных.
    • Гарантируют доставку данных, сохранение порядка и отсутствие дубликатов.
    • Используются для протоколов, требующих надежной передачи (HTTP, FTP, SSH).
  2. UDP-сокеты (дейтаграммные):
    • Используют протокол UDP.
    • Представляют собой ненадежную, безсоединительную передачу данных в виде дейтаграмм.
    • Не гарантируют доставку, порядок или отсутствие дубликатов.
    • Используются для протоколов, где важна скорость, а не надежность (DNS, потоковое видео/аудио).

В Java сокетное программирование реализуется при помощи классов из пакета java.net:

  • Socket для клиентских TCP-сокетов.
  • ServerSocket для серверных TCP-сокетов.
  • DatagramSocket для UDP-сокетов.
  • DatagramPacket для дейтаграмм UDP.

Пример простого TCP-клиента:

java