Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ gSOAP**不**关闭插座?_C++_Sockets_Soap_Gsoap - Fatal编程技术网

C++ gSOAP**不**关闭插座?

C++ gSOAP**不**关闭插座?,c++,sockets,soap,gsoap,C++,Sockets,Soap,Gsoap,我对gSoap有个问题-它没有关闭插座。。情况是这样的:应用程序工作正常,但当我调用“reload”函数时,它无法重新连接。。下面是一段代码: 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

我对gSoap有个问题-它没有关闭插座。。情况是这样的:应用程序工作正常,但当我调用“reload”函数时,它无法重新连接。。下面是一段代码:

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_时,程序崩溃,因为我没有创建新的soap对象,只是再次初始化它。所以,soap_done应该有用。有趣的是,这并不是每次都会发生

这很奇怪。。紧急:/

提前多谢


编辑问题解决了。非常感谢鸭子

您应该确切地知道抛出了什么错误

您可能从bind()中获得“地址已在使用”错误。您可以尝试通过使用setsockopt()或等效的soap调用以及SO_REUSEADDR选项来纠正这一问题


link提供了一个简明的解释。

它抛出了什么错误?看起来您可以使用soap.errnum和soap\u print\u fault()查找。你要提前关上插座吗?您是否正在使用SO_REUSEADDR并很快重新启动?您好,我之前在这里写过,但发生了一些事情,可能是因为网站关闭了。。无论如何非常感谢你!成功了!我加了这么多,一切都很好。。这是一个虚拟的错误,但我对这个gSoap库一点也不熟悉..只是必须修复应用程序中的一个错误,是由其他人编写的..当你没有时间阅读这些第三方库的任何内容时,很难立即修复这样的问题。。非常感谢你的帮助!我试过soap\u print\u fault,它“说”的只是插座无法重新打开。编写此应用程序的开发人员发出了“等待(1);”肥皂洗完之后,但这还不够。应用程序每秒处理500-800个请求,因此我无法设置更长的等待时间。所以,我的意思是,问题真的出在时间上,因为如果我等待大约,比方说,30秒,套接字成功地重新打开了。不管怎样,再次感谢你的帮助@鸭子-如果你愿意,你可以把你的评论作为答案,以便能够接受它并“给”你一些声誉。这真的帮助了我,解决了我的问题,再次感谢(:基里尔·基洛夫-当然,我很高兴它帮助了我,事情解决了。谢谢。