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