Наиболее распространенный случай, когда сокет недоступен для записи, - это когда соединение проходит через относительно медленное сетевое соединение, которое может насыщать ваше приложение.Операционная система будет буферизовать ограниченный объем данных, поэтому вашему приложению придется ограничить себя, проверив, доступен ли сокет (что указывает на то, что некоторые данные были отправлены и в буфере есть свободное место) перед отправкой больше.* Что касается вашего другого вопроса, если у вас есть несколько сокетов любого вида, используемых одним потоком, как в случае, например, с веб-сервером, то, безусловно, имеет смысл использовать select () для эффективного управления ими.