| Предыдущий | Следующий |
| WSAENOBUFS | WSAENOTCONN |
WSAEISCONN
WSAEISCONN является ошибкой жизненного цикла сокета: приложение попыталось подключить сокет, у которого уже есть связь с удалённым узлом. Это не означает, что существующее соединение исправно или что сервер отклонил второй запрос; контракт API не допускает ещё один connect для сокета в его текущем состоянии.
Типичные причины
Распространённые причины: повторный вызов процедуры подключения после успешного асинхронного завершения, повторное использование объекта, предыдущее соединение которого не было закрыто, или обращение с дейтаграммным сокетом, намеренно подключённым к узлу по умолчанию, как с неподключённым. В многопоточном коде две попытки подключения могут конкурировать, если переходом из состояния «подключается» в «подключён» не управляет один конечный автомат.
Что делать
- Ведите явные состояния: создан, подключается, подключён, закрывается и закрыт.
- Перед повторным подключением после ошибки закройте и замените неисправный сокет, а не вызывайте
connectещё раз для объекта с неопределённым состоянием. - Запишите исходный адрес удалённого узла и вызов, установивший первую связь.
Microsoft: connect · Microsoft: создание сокета · The Open Group: жизненный цикл сокета
Нужно найти другой код? Найти другой код состояния или ошибки.