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オブジェクトを作成せず、再度初期化するだけでプログラムがクラッシュします。SO、soap_done が機能するはずです。そして興味深いのは、これが毎回起こるわけではないということです。
それは非常に奇妙です..そして緊急です:/
事前にどうもありがとう
編集問題は解決しました。ダックに感謝します!