2011-12-20 77 views
0

我試圖啓用多個同時客戶端訪問web服務,enabeling客戶端提出請求,並阻止數據可用(我這樣做,因爲gsoap不支持通知)使用gsoap的多個同時客戶端

我的webservice類使用WITH_PURE_VIRTAL進行編譯,這意味着我無法創建它的實例,因爲它是一個抽象類。因此,我使用由我構建的一個類,它從webservice類繼承,並負責管理webservice和webclient請求。

但是,當我的班級忙於處理現有的客戶端時,我似乎無法收到任何其他請求。

我讀(here),你應該啓動一個線程有類似於這樣:

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); 

然而,當我修改代碼來調用我的web服務類代替,該服務調用不會做任何東西。

我也嘗試在我的webservice調用方法中啓動一個新線程,但一旦線程啓動,webclient會收到一個空響應。

有沒有人有任何建議?

回答

1

如果你看看我對this問題的回答,你可以看到一個非常基本的C++線程gSoap服務器。我想你可能會缺少的是需要複製服務類,在我的代碼行tc = c.copy() ; // make a safe copy這複製gSoap服務實例,包括gSoap上下文;它是傳遞到新線程的這個副本,以便新線程可以在主線程等待另一個請求時響應請求。

+0

這是正確的答案。我只需要實現抽象複製方法,這使我能夠處理多個客戶端。謝謝你的反饋! – Daniel 2011-12-21 23:13:58

相關問題