в качестве фона у меня есть встроенное устройство, которое общается со сторонним сервером по IP. Код на стороннем сервере вряд ли изменится. В недавнем выпуске я изменил функцию отключения ip для вызова shutdown () перед вызовом close () (ранее она вызывала только close ()). Встроенное устройство отключается, не завершив сеанс связи, при возникновении определенных прерываний. Когда это происходит не в том месте сеанса, сервер создает файл трассировки, который по разным причинам неприемлем для клиента. Это происходит только тогда, когда вызывается завершение работы, сервер рассматривает это как ошибку, с которой не удалось отправить (и создает файл трассировки), в то время как он обрабатывает более резкое close () как ошибку отключения другого конца, которая не требует трассировки.
Итак, очевидное решение - перестать вызывать выключение. Ответ г-на Барнса на этот вопрос дает хорошее описание этих двух функций, но если вы знаете, что к конкретному сокету подключен только один процесс, есть ли причина использовать выключение перед закрытием?
Спасибо, Патрик
shutdown
противclose
. Кроме того, вы устанавливаете параметрSO_LINGER
? - person cjs   schedule 18.06.2009