Linux から Windows にいくつかの単体テストを移植する際に、奇妙な問題に遭遇しました。テストでサーバー ソケットをシャットダウンすると、shutdown() は -1 を返しますが、WSAGetLastError() は 0 を返します (そして getsockopt( with SO_ERROR ) は 0 を返し、GetLastError() は 0 を返します)...だから、shutdown( ) はエラーがあることを教えてくれますが、その問題が何であるかを確認するための通常の呼び出しはすべて「問題ありません!」を返しています...これを前に見た人はいますか?
shutdown を呼び出すコードは次のようになります。
int ret = ::shutdown( _sok, mode );
if( ret < 0 )
X_THROW(( XSDK::ModuleId, XSDK::F_OS_ERROR, "Unable to shutdown socket."));
例外をキャッチすると、それらすべての GetLastError() 関数を呼び出します...スローすると最後のエラーがリセットされますか?