Потоковые сокеты. Еще одним важным средством обеспечения передачи информации по сети являются потоковые сокеты, реализованные в домене Internet в виде протокола TCP. Потоковые сокеты обеспечивают упорядоченный, надежный двухсторонний обмен информацией в виде потоков байтов. Потоковые сокеты можно сравнить с непрерывно поддерживаемой телефонной связью. Клиенты подключаются к серверам, указывая их адреса. Два участника соединения обмениваются данными в течение некоторого времени, а затем один из этих двух участников разрывает соединение.
Операции чтения и записи в потоковый сокет во многом аналогичны операциям чтения и записи в файл. Поток не регламентирует произвольных предельных ограничений размера или границ записей, хотя при желании может быть разбит на отдельные записи. Поскольку потоковые сокеты обеспечивают упорядоченную и надёжную передачу данных, существует возможность отправить в сокет ряд байтов в полной уверенности, что они появятся на другом его конце в правильном порядке при условии, что они вообще появятся (надежный - не значит невосприимчивый к сетевым ошибкам).
Протокол TCP обеспечивает также управление потоком данных. В отличие от протокола UDP, при использовании которого опасность переполнения буфера приема данных является вполне реальной, протокол TCP предусматривает автоматическую отправку сигналов хосту-отправителю, чтобы он на время приостановил передачу, если хост-получатель за ним не успевает, и возобновил отправку данных после того, как хост-получатель снова будет к этому готов. Это управление потоком данных реализовано в самом протоколе и обычно не заметно для постороннего взгляда.