日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

gsoap写一个c++ webservice

發布時間:2025/3/21 c/c++ 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gsoap写一个c++ webservice 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
由于對gsoap不熟。網上很多人都說,c++要調用webservice,可以用gsoap這個開源的開發包,于是就下載了gsoap,我下載的是2.8.3版本,是2011年6月25日release的。地址是http://sourceforge.net/projects/gsoap2/files/gSOAP/。現在的最新版是2.8.4,release時間是2011年10月22日。

下載,解壓,看一眼目錄結構: 

接下來寫一個服務器端和客戶端都用C++的Demo,開發環境是VS2005。需要用到的是該目錄下的stdsoap2.cpp和stdsoap2.h兩個文件,bin/win32目錄下的soapcpp2.exe文件。這個Demo分為Server端和Client端,以下是詳細的步驟:

[Server端]

用VS2005新建一個Win32控制臺應用程序,命名g_server,選擇空項目,其他默認即可。

添加一個server.cpp和server.h,在server.h中聲明一個函數int ns__add(int num1, int num2, int *sum);在server.cpp中添加main函數,build,ok到這一步沒啥問題。

將剛才提到的bin/win32目錄下的soapcpp2.exe拷貝到server.h目錄下,打開cmd,進入當前目錄,敲入命令soapcpp2.exe server.h,回車: 可以看到當前目錄下生成了以下文件:

我將這些文件拷貝一份保存到bak文件夾,以防萬一改錯,可以從備份中拿最初的文件。

這些文件留取備用。

然后將剛才提到的stdsoap2.cpp和stdsoap2.h兩個文件拷貝到源文件所在的目錄。將soapC.cpp,soapServer.cpp,stdsoap2.cpp加入到項目中,將soapH.h,soapStub.h,stdsoap2.h加入到項目中。在server.cpp中包含頭文件ns.nsmap(該文件是剛才自動生成的一個,網上有些朋友是包含soapStub.h但是我發現這樣編譯會報錯,不知道是為什么)。

接下去將ns__add()函數定義完成,并編寫完main函數。Server端就完成了。

Main函數中的代碼是:

int nPort = 8080;

struct soap fun_soap;

soap_init(&fun_soap);

int nMaster = (int)soap_bind(&fun_soap, NULL, nPort, 100);

if (nMaster < 0)

{

soap_print_fault(&fun_soap, stderr);

exit(-1);

}

fprintf(stderr, "Socket connection successful : master socket = %d\n", nMaster);

while (true)

{

int nSlave = (int)soap_accept(&fun_soap);

if (nSlave < 0)

{

soap_print_fault(&fun_soap, stderr);

exit(-1);

}

fprintf(stderr, "Socket connection successful : slave socket = %d\n", nSlave);

soap_serve(&fun_soap);

soap_end(&fun_soap);

}

項目結構是:

編譯,成功。按Ctrl+F5運行,可以看到:

說明服務已成功啟動。驗證以下,在瀏覽器中輸入http://localhost:8080,回車,如果看到

說明服務器真的成功啟動!~~~先YY開心一下。喝杯咖啡。

[Client?端]

Client端稍微簡單一點。首先打開VS2005,新建一個Win32控制臺應用程序,空項目。加入client.cpp和client.h,在client.cpp中寫main函數,build一下,ok

將剛才備份的文件全部拷貝到當前項目源文件所在目錄下。

將soapH.h,soapStub.h,stdsoap2.h加入到頭文件,將soapC.cpp,soapClient.cpp,stdsoap2.cpp加入當源文件。

同樣在client.cpp中包含頭文件#include "ns.nsmap"

編寫main函數和TestAdd函數:

int TestAdd(const char* server)

{

struct soap add_soap;

int nResult = 0;

soap_init(&add_soap);

int nNum1 = 20;

int nNum2 = 10;

int nSum = 0;

soap_call_ns__add(&add_soap, server, "", nNum1, nNum2, &nSum);

if (add_soap.error)

{

soap_print_fault(&add_soap, stderr);

}

soap_end(&add_soap);

soap_done(&add_soap);

return nSum;

}

int main()

{

char* server = "http://127.0.0.1:8080";

int result = TestAdd(server);

cout << "TestAdd result=" << result << endl;

return 0;

}

項目結構如下:

Build,按Ctrl+F5,運行,結果如下:

Server端看到的結果:

最后?需要注意的一點 就是Server需要設置附加庫wsock32.lib,因為webservice底層是用socket通訊的。

發現CSDN好像只能上傳圖片,不能上傳rar壓縮包,所以源代碼也沒辦法在這里分享,如果有需要的,可以留下Email或者聯系我, 我的Email: ruanjwei@sohu.com MSN: ? ? ? ? ? ruanjwei@sohu.com QQ: ? ? ? ? ? ? 372760564

總結

以上是生活随笔為你收集整理的gsoap写一个c++ webservice的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。