мне, соединение будет все время быть читаемым, или это будет записываемые
Нет, это не будет. Он будет доступен только тогда, когда есть данные, уже присутствующие в буфере приема сокетов, и он будет доступен только для записи, когда в буфере отправки сокетов есть место (которое больше всего времени, но не все).
Это то, что select()
является для:, чтобы рассказать вам, когда происходят эти события.
Мы не можем полагаться на событие r/w?
Если это означает событие «чтение-запись», это то, что дает select()
. Если вы имеете в виду что-то еще, вам придется объяснить, что.
когда клиент тесная связь, г/ш получит ошибка возвращения рано или поздно
Нет это не будет. Он получит индикацию конца потока. Это принимает несколько форм в зависимости от того, какой API и язык вы используете, но ни одна из них не является ошибкой.
затем мы можем закрыть fds.
Конечно, вы должны закрыть fd
, когда вы закончите с ними, но для сетевого программирования есть немного больше.
так что единственное значение управления соединением - это предотвратить соединение от ничего не делающего (он может все время быть доступным для записи на сервере, но сервер не имеет права писать после нормального взаимодействия), правильно ли это?
Это бессмысленно. Вы ввели термин «управление связью» без источника или цитаты, а затем утверждаете, что он имеет только то значение, которое вы приписываете ему, без доказательств, а слово «так» - это просто .
«для меня соединение будет читаться постоянно, или оно будет доступно для записи». - Ну, это не будет на вашем компьютере, так что вопрос: какая перспектива имеет значение больше? –