我对 gSoap 有疑问 - 它没有关闭套接字。情况如下:应用程序运行良好,但是当我调用“重新加载”函数时,它无法重新连接。这是一段代码:
soap_destroy( &m_soapObj );
soap_end( &m_soapObj );
soap_done(&m_soapObj);
sleep(1);
soap_init(&m_soapObj);
//m_ptrThis should be initialized already
assert( m_ptrThis != NULL );
m_soapObj.user = &m_ptrThis;
m_soapObj.accept_timeout = nAcceptTimeout;
m_ptrThreadPool->SetNumThreads( nNumThreads );
m_nSocketListener = soap_bind(&m_soapObj, NULL, nPort, nBacklog);
if (!soap_valid_socket(m_nSocketListener))
{
throw Exception(
"Cannot start listening on port: %d", nPort );
}
它抛出了..当我尝试使用soap_free时,程序崩溃了,因为我没有创建新的Soap对象,只需再次初始化它。所以,soap_done 应该可以工作。有趣的是,这种情况并非每次都会发生。
这很奇怪..而且很紧急:/
非常感谢提前
编辑问题解决了。非常感谢鸭子!