麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

gsoap中文文檔(5.gSoap2.x版與gSOAP 1.x版的不同)

2019-11-18 11:28:13
字體:
來源:轉載
供稿:網友

5. gSoap2.x版與gSOAP 1.x版的不同
 假如你是從1.x版升級到2.x版,請注重下面的內容。
 gSOAP2.0及之后的版本是在1.x版基礎上重寫的。gSOAP2.0之后的版本是線程安全的,但之前版本不是。gSOAP2.x版本中的主要文件已經重新命名,以便與1.x版區分。

gSOAP 1.X  gSOAP 2.X 
soapcpp  soapcpp2 
soapcpp.exe  soapcpp2.exe 
stdsoap.h  stdsoap2.h 
stdsoap.c  stdsoap2.c 
stdsoap.cpp  stdsoap2.cpp 
 
 從1.x版升級到2.x版并不需要進行大量的代碼重寫工作。所有2.x版相關的函數都定義在stdsoap2.c[pp]文件中,這個文件是由gSOAP編譯器自動生成的。所以,用1.x版開發的服務端或客戶端代碼需要進行修改以適應2.x版中函數的變化:在2.x版中,所有的gSOAP函數都增加了一個參數用來保存一個gSOAP運行環境實例。這個參數包括了文件描述,表,緩沖,標志位等,它在所有gSOAP函數中都是第一個參數。
 gSOAP運行環境實例是一個strUCt soap類型的變量。當客戶端程序訪問遠程方法前或當服務端程序能夠接收一個請求前,必須先將這個運行環境變量初始化。在2.x版中新增了3個函數來負責這些事情:
 函數                        解釋
 soap_init(struct soap *soap)         初始化環境變量(只需執行一次)
 struct soap *soap_new()            定義并初始化環境變量并返回一個該變量的指針
 struct soap *soap_copy(struct soap *soap)   定義一個環境變量并從已有的環境變量中拷貝環境信息
 
  環境變量定義好后就可以重復使用而不必再次初始化了。只有當線程獨占訪問時,我們才需要一個新的環境變量。例如,下面的代碼分配了一個用于多個遠程方法的環境變量:
 int main()
{
   struct soap soap;
   ...
   soap_init(&soap); // 初始化環境變量
   ...
   soap_call_ns__method1(&soap, ...); // 調用一個遠程方法
   ...
   soap_call_ns__method2(&soap, ...); // 調用另一個遠程方法
   ...
   soap_end(&soap); // 清除環境變量
   ...
}
 我們也可以像下面這樣定義環境變量:
 int main()
{
   struct soap *soap;
   ...
   soap = soap_new(); // 定義并初始化環境變量
   if (!soap) // 假如不能定義,退出
   ...
   soap_call_ns__method1(soap, ...); // 調用遠程函數
   ...
   soap_call_ns__method2(soap, ...); // 調用另一個遠程函數
   ...
   soap_end(soap); // 清除環境變量
   ...
   free(soap); // 釋放環境變量空間
}
 
 服務端代碼在調用soap_serve函數前,需要定義相關環境變量:

int main()
{
   struct soap soap;
   soap_init(&soap);
   soap_serve(&soap);

 或者像下面這樣:

int main()
{
   soap_serve(soap_new());

 soap_serve函數用來處理一個或多個(當答應HTTP keep-alive時,參見18.11節中的SOAP_IO_KEEPALIVE標志)請求。
 一個web服務可以用多線程技術來處理請求:
int main()
{
   struct soap soap1, soap2;
   pthread_t tid;
   ...
   soap_init(&soap1);
   if (soap_bind(&soap1, host, port, backlog) < 0) exit(1);
   if (soap_accept(&soap1) < 0) exit(1);
   pthread_create(&tid, NULL, (void*(*)(void*))soap_serve, (void*)&soap1);
   ...
   soap_init(&soap2);
   soap_call_ns__method(&soap2, ...); // 調用遠程方法
   ...
   soap_end(&soap2);
   ...
   pthread_join(tid, NULL); // 等待線程結束
   soap_end(&soap1); // 釋放環境變量



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品久久久久久中文字幕 | 91 在线免费观看 | 国产精品一区在线观看 | 一区二区美女视频 | 国产精品成人亚洲一区二区 | 青青草成人影视 | 亚洲国产视频在线 | 久久综合福利 | 国产成人精品区 | 日本欧美一区二区三区在线播 | 国产精品色综合 | 精品国产一级毛片 | 久草在线新时代视觉 | 国产亚洲精品综合一区91555 | 久久草在线视频免费 | 免费国产不卡午夜福在线 | 港台三级在线观看 | 请播放一级毛片 | 国产精品刺激对白麻豆99 | 精品中文视频 | 欧美爱爱视频免费看 | 亚洲性爰 | 性少妇videosexfreexx | 逼片| 中文字幕在线视频日本 | 草草免费视频 | 国产亚洲欧美日韩在线观看不卡 | 黄色网址免费在线播放 | 欧美雌雄另类xxxxx | 在线播放免费视频 | 国产伦精品一区二区三区在线 | 日韩精品一二三 | 欧美成人激情 | 影视免费观看 | 九九热在线精品视频 | 日韩一级片一区二区三区 | 成人午夜在线免费视频 | 激情视频免费看 | 国产精品久久久久久久久久久久久久久 | 欧美黄色大片免费观看 | 成人福利电影在线观看 |