Тот, кто когда-либо использовал синтаксическую конструкцию open (FH, "| comand") языка Perl для открытия канала во внешнюю программу, как это описывает компьютерный журнал , знает, что работа с потоковыми сокетами не имеет значительных отличий. Основное различие состоит в том, что потоковые сокеты, в отличие от каналов, являются двунаправленными.
Несмотря на то что данные, передаваемые с помощью протокола TCP, составляют непрерывный поток байтов, сам протокол фактически реализован на основе дейтаграммной службы, в данном случае - протокола IP низкого уровня. Пакеты IP столь же ненадежны, как и дейтаграммы UDP, поэтому именно протокол TCP обеспечивает проверку порядковых номеров пакетов, подтверждение полученных пакетов и повторную передачу потерянных пакетов.
Сопоставление дейтаграммных и потоковых сокетов. После ознакомления со всеми этими проблемами надежности возникает вопрос для чего вообще нужен протокол UDP. Ответ на этот вопрос состоит в том, что в большинстве программ типа клиент/сервер в Internet вместо него действительно применяются потоковые сокеты TCP. В большинстве случаев TCP может служить самым лучшим решением и для вновь разрабатываемых программ.
Однако UDP может оказаться лучшим вариантом. Например, серверы службы времени используют дейтаграммы UDP для передачи информации о текущем времени клиентам, которые используют ее для синхронизации часов. Если дейтаграмма исчезнет в ходе передачи, то не нужно (и не желательно) передавать ее снова, поскольку содержащаяся в ней отметка времени больше не будет актуальной.