Что означает код ошибки Windows 10056 (WSAEISCONN)?

 
Предыдущий Следующий
WSAENOBUFS WSAENOTCONN

WSAEISCONN

WSAEISCONN является ошибкой жизненного цикла сокета: приложение попыталось подключить сокет, у которого уже есть связь с удалённым узлом. Это не означает, что существующее соединение исправно или что сервер отклонил второй запрос; контракт API не допускает ещё один connect для сокета в его текущем состоянии.

Типичные причины

Распространённые причины: повторный вызов процедуры подключения после успешного асинхронного завершения, повторное использование объекта, предыдущее соединение которого не было закрыто, или обращение с дейтаграммным сокетом, намеренно подключённым к узлу по умолчанию, как с неподключённым. В многопоточном коде две попытки подключения могут конкурировать, если переходом из состояния «подключается» в «подключён» не управляет один конечный автомат.

Что делать

  • Ведите явные состояния: создан, подключается, подключён, закрывается и закрыт.
  • Перед повторным подключением после ошибки закройте и замените неисправный сокет, а не вызывайте connect ещё раз для объекта с неопределённым состоянием.
  • Запишите исходный адрес удалённого узла и вызов, установивший первую связь.

Microsoft: connect · Microsoft: создание сокета · The Open Group: жизненный цикл сокета


Нужно найти другой код? Найти другой код состояния или ошибки.