在将一些工作单元测试从 Linux 移植到 Windows 时,我遇到了一个奇怪的问题。看来,当我的测试关闭服务器套接字时,shutdown() 返回-1,但 WSAGetLastError() 返回 0(并且 getsockopt( 带有 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() 函数...... throwing 会重置最后的错误吗?