Я работаю над написанием сетевого приложения на С++ на платформе Linux с использованием обычного API сокетов, и я рассматриваю два альтернативных способа записи байтового массива в поток TCP: либо путем вызова write(), либо путем вызов send(). Я знаю, что, поскольку это Linux, дескриптор сокета - это просто дескриптор файла, и поэтому он действителен для выполнения вызовов read() и write() в сокете, однако API сокетов также предоставляет send() и recv ( ) для выполнения тех же задач.
Поэтому я задаюсь вопросом, есть ли какая-то особая причина выбора одного класса функций над другим - функции send/recv, оптимизированные для записи/чтения в сети, работают ли они лучше и т.д.? Или это действительно произвольно, какие функции я использую? Должны ли читать() и write() вести себя правильно во всех случаях?
Спасибо за любые идеи!