Относительно простой вопрос: когда, скажем, recv() с использованием неблокирующих сокетов Linux, существует ли способ определить априорно, сколько данных доступно для получения?Linux неблокирующие сокеты: сколько данных можно прочитать перед блокировкой?
Кажется, что я всегда собираюсь сделать дополнительный вызов recv(), чтобы определить, что я исчерпал все данные.
Если бы вы могли получить эту информацию, она уже была бы устаревшей, прежде чем вы могли бы воздействовать на нее ... –
Что значит «перед блокировкой»? Это неблокирующий сокет. Он не будет блокироваться. Вы можете просто вызвать 'recv()' до тех пор, пока не произойдет EAGAIN/EWOULDBLOCK. Неясно, что вы спрашиваете. – EJP