| Предыдущий | Следующий |
| EBADSLT | EBFONT |
ENOTCONN
Операции требуется состояние другой стороны, которого нет у сокета
ENOTCONN возникает, когда API требует подключённую другую сторону, но сокет не подключён. Ошибка может последовать за попыткой отправки или приёма через сокет с установлением соединения до завершения подключения, после разрыва либо через сокет в стиле датаграмм, у которого нет другой стороны по умолчанию.
Это ошибка локального состояния, а не удалённый отказ. Для отправки без установления соединения правильным может быть API, передающий адрес назначения вместе с сообщением; для сокета с соединением программа сначала должна завершить и проверить установление подключения.
Что сохранить
- Запишите тип сокета, текущее состояние соединения, результат последнего подключения и сведения о том, был ли вызван
send(),sendto(),recv()илиshutdown(). - Проверьте гонку между завершением подключения и рабочим потоком, начинающим ввод-вывод, особенно после неблокирующего результата
EINPROGRESS. - После ошибки или закрытия выведите старое состояние сокета из использования, не позволяя поставленной в очередь работе приложения продолжаться так, будто другая сторона всё ещё подключена.
Отличие от отсутствующего адреса
EDESTADDRREQ — случай без установления соединения, когда отправке требуется явное назначение. ENOTCONN — случай операции с соединением, когда API требуется ещё не установленная связь с другой стороной.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.