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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux下用gSOAP开发Web Service服务端和客户端程序(一)

發(fā)布時(shí)間:2025/3/21 linux 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux下用gSOAP开发Web Service服务端和客户端程序(一) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、功能說明:

?????? 要開發(fā)的Web Service功能非常簡單,就是一個(gè)add函數(shù),將兩個(gè)參數(shù)相加,返回其和。

?

2、C版本的程序:

(1)頭文件:SmsWBS.h,注釋部分不可少,url部分的IP必須填寫當(dāng)前Linux電腦的IP

//gsoap ns service name: SmsWBS
//gsoap ns service style: rpc
//gsoap ns service namespace:?http://192.168.2.161:9000/SmsWBS.wsdl
//gsoap ns service location:?http://192.168.2.161:9000
//gsoap ns service encoding: encoded
//gsoap ns schema namespace: urn:SmsWBS

int ns__add(int num1, int num2, int *sum);
這個(gè)頭文件需要注意的是,前面的 // 部分是有意義的,可以在上面修改,如果完全去掉,將會(huì)導(dǎo)致生成的中間文件不同,由此會(huì)引起要修改Makefile文件???????????????????????????????????????????

(2)Makefile文件:

比較關(guān)鍵,如果頭文件中的 // 部分有修改,要檢查是否要修改Makefile文件

GSOAP_ROOT=/usr/local/gSOAP
WSNAME0=soap
WSNAME=SmsWBS
CC=g++ -g -DWITH_NONAMESPACES
INCLUDE=-I $(GSOAP_ROOT)/include
SERVER_OBJS=$(WSNAME0)C.o $(WSNAME0)Server.o stdsoap2.o
CLIENT_OBJS=$(GSOAP_ROOT)/env/envC.o $(WSNAME0)ClientLib.o stdsoap2.o
ALL_OBJS=${WSNAME}server.o $(WSNAME0)C.o $(WSNAME0)Server.o ${WSNAME}test.o $(WSNAME0)ClientLib.o
#GSOAP_SRC=/usr/local/gsoap-2.7/gsoap

all:server

${WSNAME}.wsdl:${WSNAME}.h
??????? $(GSOAP_ROOT)/bin/soapcpp2 -c $(GSOAP_ROOT)/import ${WSNAME}.h

stdsoap2.o:$(GSOAP_ROOT)/src/stdsoap2.c
??????? $(CC) -c $? $(INCLUDE)

$(ALL_OBJS):%.o:%.c
??????? $(CC) -c $? $(INCLUDE)

server:Makefile ${WSNAME}.wsdl ${WSNAME}server.o $(SERVER_OBJS)
??????? $(CC) ${WSNAME}server.o $(SERVER_OBJS) -o ${WSNAME}server

client:Makefile ${WSNAME}.wsdl ${WSNAME}test.c $(ALL_OBJS) stdsoap2.o
??????? $(CC) ${WSNAME}test.o $(CLIENT_OBJS) -o ${WSNAME}test

clean:
??????? rm -f *.o *.xml *.a *.wsdl *.nsmap $(WSNAME0)H.h $(WSNAME0)C.c $(WSNAME0)Server.c $(WSNAME0)Client.c $(WSNAME0)Stub.* $(WSNAME)$(WSNAME)Proxy.* $(WSNAME)$(WSNAME)Object.* $(WSNAME0)ServerLib.c $(WSNAME0)ClientLib.c $(WSNAME)server ns.xsd $(WSNAME)test

?

(3)服務(wù)端程序SmsWBSserver.c:

#include "soapH.h"
#include "SmsWBS.nsmap"

int main(int argc, char **argv)
{
??????? int m, s;?????????????? /* master and slave sockets */
??????? struct soap SmsWBS_soap;

??????? soap_init(&SmsWBS_soap);

??????? soap_set_namespaces(&SmsWBS_soap, namespaces);

??????? if (argc < 2)
??????? {
??????????????? printf("usage: %s <server_port> \n", argv[0]);
??????????????? exit(1);
??????? }
??????? else
??????? {
??????????????? m = soap_bind(&SmsWBS_soap, NULL, atoi(argv[1]), 100);
??????????????? if (m < 0)
??????????????? {
??????????????????????? soap_print_fault(&SmsWBS_soap, stderr);
??????????????????????? exit(-1);
??????????????? }

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

??????????????? for (;;)
??????????????? {
??????????????????????? s = soap_accept(&SmsWBS_soap);

??????????????????????? if (s < 0)
??????????????????????? {
??????????????????????????????? soap_print_fault(&SmsWBS_soap, stderr);
??????????????????????????????? exit(-1);
??????????????????????? }

??????????????????????? fprintf(stderr, "Socket connection successful: slave socket = %d\n", s);
??????????????????????? soap_serve(&SmsWBS_soap);
??????????????????????? soap_end(&SmsWBS_soap);
??????????????? }

?????? }

??????? return 0;
}

int ns__add(struct soap *add_soap, int num1, int num2, int *sum)
{
??????? *sum = num1 + num2;
??????? return 0;
}

?

(4)客戶端程序SmsWBStest.c:

#include <stdio.h>
#include <stdlib.h>
#include "soapStub.h"
#include "SmsWBS.nsmap"

int add(const char *server, int num1, int num2, int *sum);

int add(const char *server, int num1, int num2, int *sum)
{
??????? struct soap SmsWBS_soap;
??????? int result = 0;

??????? soap_init(&SmsWBS_soap);
??????? soap_set_namespaces(&SmsWBS_soap, namespaces);

??????? soap_call_ns__add(&SmsWBS_soap, server, "", num1, num2, sum);

??????? if(SmsWBS_soap.error)
??????? {
??????????????? printf("soap error:%d, %s, %s ", SmsWBS_soap.error, *soap_faultcode(&SmsWBS_soap), *soap_faultstring(&SmsWBS_soap));
??????????????? result = SmsWBS_soap.error;
???????? }

??????? soap_end(&SmsWBS_soap);
??????? soap_done(&SmsWBS_soap);

??????? return result;
}

int main(int argc, char **argv)
{
??????? int result = -1;
??????? char* server="http://localhost:9000";

??????? int num1 = 0;
??????? int num2 = 0;
??????? int sum = 0;

??????? if( argc < 3 )
??????? {
??????????????? printf("usage: %s num1 num2 \n", argv[0]);
??????????????? exit(0);

??????? }

??????? num1 = atoi(argv[1]);
??????? num2 = atoi(argv[2]);

??????? result = add(server, num1, num2, &sum);
??????? if (result != 0)
??????? {
??????????????? printf("soap err, errcode = %d \n", result);
??????? }
??????? else
??????? {
??????????????? printf("%d + %d = %d \n", num1, num2, sum);
??????? }

??????? return 0;
}

(5)編譯和運(yùn)行:

前面都已經(jīng)準(zhǔn)備好了,現(xiàn)在只需要:

make???????????????????????????????????? ---得到服務(wù)端程序SmsWBSserver

make client??????????????????????????? ---得到客戶端程序SmsWBStest

SmsWBSserver 9000???????????? ----運(yùn)行服務(wù)端程序

出來類似下面的顯示就表示運(yùn)行正常

Socket connection successful: master socket = 3

再運(yùn)行客戶端程序:

SmsWBStest 67 78

顯示:

67 + 78 = 145

調(diào)用Web Service成功

轉(zhuǎn)載于:https://blog.51cto.com/5491911/932507

總結(jié)

以上是生活随笔為你收集整理的Linux下用gSOAP开发Web Service服务端和客户端程序(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: jizz欧美大片 | 免费三级黄色 | 精品国产一区一区二区三亚瑟 | 中文理论片 | 欧美日韩午夜精品 | 可以免费在线观看的av | 成人精品久久久午夜福利 | 国产suv精品一区二区四 | 亚洲高h| 久久在线免费 | 日韩片在线观看 | 亚洲逼逼 | 国模无码大尺度一区二区三区 | 一级免费黄色大片 | av涩涩| 久久久久无码国产精品一区李宗瑞 | 性欧美丰满熟妇xxxx性久久久 | 在线播放波多野结衣 | 亚州一二区 | 公侵犯人妻中文字慕一区二区 | 18成人免费观看网站下载 | 丁香六月综合激情 | 日韩国产成人无码av毛片 | 国产一级片精品 | 精品国模一区二区三区欧美 | 欧美日韩在线观看成人 | 99精品视频免费看 | 性插免费视频 | 日韩福利视频一区 | 中文字幕23页 | 九九综合网 | 国产911在线观看 | 国产精品黄色在线观看 | 欧美日韩在线免费播放 | 成人国产在线视频 | 澳门黄色一级片 | 午夜免费在线观看 | 欧美资源在线观看 | 麻豆资源 | av在线不卡网站 | 亚洲女则毛耸耸bbw 边吃奶边添下面好爽 | 日日躁夜夜躁aaaabbbb | 中国女人内谢69xxxxⅹ视频 | 久久久夜精品 | 国产女主播喷水高潮网红在线 | 四虎毛片 | 亚洲天堂一区二区 | www黄在线观看 | 动漫av在线播放 | 日韩精品久久久久久久酒店 | 七七色影院 | 一级片视频在线观看 | 久久成人一区二区 | 丰满少妇一区二区 | 99无码熟妇丰满人妻啪啪 | 国产污污视频 | 96看片 | 日韩一区二区三区精 | 精品人妻无码一区二区色欲产成人 | 中文字幕一区二区人妻在线不卡 | 99热精品在线播放 | 偷操 | 日韩成人一区二区三区 | 欧美午夜精品久久久久免费视 | www.超碰97| 一区二区网 | 成人无码精品1区2区3区免费看 | 成人美女毛片 | 国产专区第一页 | 99国产精品久久久久久久成人热 | 国产99页| 日韩不卡一二三区 | 老女人做爰全过程免费的视频 | 嫩草视频在线播放 | 亚洲一区av在线 | 动漫同人高h啪啪爽文 | 在线免费观看日韩视频 | 在线观看日本中文字幕 | 午夜视频网 | 丰满av| 40到50岁中老年妇女毛片 | 亚洲综合av一区 | 天堂在线视频 | 日韩人妻无码一区二区三区 | 欧美黄色片免费看 | 日韩一区二区三区四区五区 | 麻豆视频传媒入口 | 成人午夜网站 | 国产欧美一区二区三区在线 | www.日本在线观看 | 亚洲精品一区二区三区蜜桃久 | 国产毛片毛片 | 情不自禁电影 | 日韩人妻精品一区二区三区 | 日本亲子乱子伦xxxx50路 | 无码h黄肉3d动漫在线观看 | 鲍鱼av在线| 农村末发育av片一区二区 | 亚洲综合情 |