Всегда полезно получить реальную ошибку, как и предполагал комментарий Сарнольда.
Как правило, код сокета, который проверяет ошибки, будет вызывать WSAGetLastError()
после кода, который обнаруживает проблему путем проверки возвращаемого значения SOCKET_ERROR
.
Код ошибки, который вы получаете от WSAGetLastError()
, важен, и вы обычно можете найти причину проблемы, как только узнаете, что она означает.
Вы можете отобразить текст этого кода ошибки, используя FormatMessage()
, или вы можете найти его вручную в заголовке WinError.h.
В этом случае 10053 - это WSAECONNABORTED
, для которого в тексте ошибки указано «Установленное соединение было прервано программным обеспечением на вашем хост-компьютере».
Итак, я бы предположил, что сервер, к которому вы подключаетесь, прерывает соединение по какой-то причине. Не видя исходного кода сервера, трудно понять, почему это может быть.