繁体   English   中英

多个同时使用gsoap的客户端

[英]Multiple simultaneous clients with gsoap

我试图使多个客户端同时访问Web服务,使客户端发出请求并阻塞直到数据可用(我这样做是因为gsoap不支持通知)

我的Web服务类是使用WITH_PURE_VIRTAL编译的,这意味着我无法创建它的实例,因为它是一个抽象类。 因此,我使用一个由我构建的类,该类继承自webservice类,并负责管理webservice和webclient请求。

但是,当我的班级忙于处理现有的客户端时,我似乎无法收到任何其他请求。

我读过( 这里 ),您应该启动一个与此类似的线程:

   soap_serve((struct soap*)soap);
   soap_destroy((struct soap*)soap); // dealloc C++ data
   soap_end((struct soap*)soap); // dealloc data and clean up
   soap_done((struct soap*)soap); // detach soap struct
   free(soap); 

但是,当我修改该代码以改为调用Webservice类时,serve调用不会执行任何操作。

我还尝试在webservice调用方法中启动新线程,但是一旦线程启动,webclient就会收到一个空响应。

有没有人有什么建议?

如果您看一下我对这个问题的回答,您会看到一个非常基本的C ++线程gSoap服务器。 我认为您可能缺少的是需要复制服务类,在我的代码行tc = c.copy() ; // make a safe copy tc = c.copy() ; // make a safe copy ,从而tc = c.copy() ; // make a safe copy包含gSoap上下文的gSoap服务实例; 就是将此副本传递到新线程中,以便新线程可以在主线程等待另一个请求发出时响应该请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM