Бывает, что TCP является как потоковым протоколом, так и ориентированным на соединение, тогда как UDP является протоколом дейтаграмм и без установления соединения.Однако возможно иметь протокол дейтаграмм, ориентированный на соединение.Вот что такое специальный файл блока (или почтовый ящик Windows).
(хотя вы не можете использовать потоковый протокол без установления соединения, это не имеет смысла, если не учитывается /dev/null
)
Флаг SOCK_DGRAM
не означает, что сокет не подключен, это означает, что сокет ориентирован на дейтаграммы.
Потоковый сокет (и специальный символьный файл, такой как / dev / random или / dev /)null) обеспечивает (или использует, или оба) непрерывную последовательность байтов, без присущей структуры.Структура обеспечивается путем интерпретации содержимого потока.Вообще говоря, на каждом конце потока есть только один процесс.
Сокет, ориентированный на дейтаграмму, предоставляет (или использует, или оба) короткие сообщения, которые ограничены по размеру и являются автономными.Вообще говоря, сервер может получать дейтаграммы от нескольких клиентов, используя recvfrom
(который предоставляет вызывающей стороне адрес для отправки ответов) и отвечает на них с sendto
, указывая этот адрес.