При переносе некоторых рабочих юнит-тестов с Linux на Windows я сталкиваюсь со странной проблемой. Похоже, что когда мои тесты закрывают сокет сервера, shutdown () возвращает -1, но WSAGetLastError () возвращает 0 (и getsockopt (с SO_ERROR) возвращает 0, а GetLastError () возвращает 0) ... Итак, shutdown ( ) говорит мне, что есть ошибка, но все обычные вызовы, чтобы увидеть, что это за проблема, возвращают "нет проблем!" ... Кто-нибудь когда-нибудь видел это раньше?
Код, который вызывает выключение, выглядит следующим образом:
int ret = ::shutdown( _sok, mode );
if( ret < 0 )
X_THROW(( XSDK::ModuleId, XSDK::F_OS_ERROR, "Unable to shutdown socket."));
Когда я улавливаю исключение, я вызываю все эти функции GetLastError () ... Сбрасывает ли сброс сброс последних ошибок?