2011-07-11 34 views
1

該場景是下一個: 我有一個XMLRPC-C++應用程序,監聽PORT = 8081上的連接。它實現了一個深淵服務器,使用XMLRPC-C庫作爲下一個:如何處理XMLRPC中的多個連接深淵服務器 - C++

xmlrpc_c::serverAbyss myAbyssServer(
     myRegistry, //handler of methods 
     port,  //8081   
     "xmlrpc_log" 
     ); 

,當我創建一個腳本調用XML-RPC的許多方法中的多個連接,它工作正常。 腳本是這樣的: Script1: rpc.method1(parameters); rpc.method2(parameters); rpc.methodN(parameters);

如果使用netstat和xmlrpc_log檢查服務器中的連接,執行此腳本時,輸出內容類似於XMLRPC-SERVER:8081 XMLRPC-CLIENT:SOME TIME_WAIT。雖然XMLRPC_CLIENT IP是相同的,但是非常rpc.method調用它會創建一個新的連接。

當我在同一個客戶端執行這兩個腳本時出現問題。這意味着,在一個腳本中調用rpc.methodM(參數),與另一個腳本中的rpc.methodN(參數)同時在同一個客戶端中執行。 這會在服務器中產生崩潰,並且XMLRPC-SERVER會一直停留,直到重新啓動進程。

我讀了深淵幫助,而runOnce()方法不會幫助。默認情況下,如上所述調用構造函數,默認情況下MaxConnections爲30,並且對於Abyss服務器,超時15個segs。

是否有一些配置可以避免這種崩潰?我需要同時支持多個客戶端並同時支持多個連接。

感謝與此相關的任何幫助,

真誠, Luchux。

回答

0

好吧。顯然服務器正在處理多個連接並支持多線程與pthreads。這個問題應該在我的代碼被RPC調用執行,我猜是因爲一個重入/線程安全問題。

  • 經過一段時間的工作與其他項目後,我回到這個代碼,問題是在自然語言庫,有一些不可重入的方法。他們解決了它,我解決了它:) -
相關問題