В случае SOCK_STREAM вы можете использовать send / recv одновременно.
Пример:
Предположим, у вас есть два потока, один отвечает за отправку данных
а второй отвечает за получение данных, которые вы можете сделать, следуя инструкциям
основной режим:
получить сокет фд.
создать поток POSIX для отправки буфера на этот fd.
создайте поток POSIX для получения данных, полученных с этого fd.
подключиться к серверу.
Тема 1 Рутина:
создать буфер сообщений;
отправить буфер в этот фд.
Тема 2 Рутина:
получить данные с этого фд.
обработать дату.