Связь TCP осуществляется через розетки, которые вы создаете с сокетом ()
System Call. Розетки являются файловыми дескрипторами, всеми способами чтения и записи в файловые дескрипторы (плюс некоторые дополнительные системные вызовы, специфичные для розеток) Работа для розеток, и именно поэтому вы отправляете и получаете данные.
Как и в любом другом файловом дескрипторе, как чтения, так и записи могут заблокировать (если дескриптор файла настроен для блокировки) или возвращает индикацию, что операция не может быть немедленно (для режима блокировки не блокировки), и это как работает управление потоком Отказ