sbf999pt老虎机手机版:用C实现WebService

一、系统情况Linux操作kernel2.4.2,安装gsoap2.6到目录/usr/local/gsoap二、gSOAP的简要应用例子下面是一个简单的例子,实现一个加法运算的WebService,详细功能是客户端(client)输入num1和nu




一、系统情况

Linux 操作 kernel2.4.2,安装 gsoap2.6 到目录/usr/local/gsoap

二、gSOAP 的简要应用例子

下面是一个简单的例子,实现一个加法运算的 WebService,详细功能是客户端(client)输入 num1 和 num2,办事器端(server)返回 num1 和 num2 相加的结果 sum。

1、首先,我们必要做的是写一个函数声明文件,来定义接口函数 ns__add,文件名字为 add.h,内容如下:

//gsoap ns service name: add

//gsoap ns service namespace: http://mail.263.net/add.wsdl

//gsoap ns service location: http://mail.263.net

//gsoap ns service executable: add.cgi

//gsoap ns service encoding: encoded

/sbf999pt老虎机手机版/gsoap ns schema namespace: urn:add

int ns__add( int num1, int num2, int* sum );

2、然后我们必要创建文件 Makefile,从而使用 gsoapcpp2 对象由 add.h 天生一些 .xml 文件、.c 文件和 .h 文件,这些文件均为自动天生,Makefile的内容如下:

GSOAP_ROOT=/usr/local/gsoap

WSNAME=add

CC=g++ -g -DWITH_NONAMESPACES

INCLUDE=-I $(GSOAP_ROOT)

SERVER_OBJS=$(WSNAME)C.o $(WSNAME)Server.o stdsoap2.o

CLIENT_OBJS=$(GSOAP_ROOT)/env/envC.o $(WSNAME)ClientLib.o stdsoap2.o

ALL_OBJS=${WSNAME}server.o $(WSNAME)C.o $(WSNAME)Server.o ${WSNAME}test.o

${WSNAME}client.o $(WSNAME)ClientLib.o

#总的目标

all:server

${WSNAME}.wsdl:${WSNAME}.h

$(GSOAP_ROOT)/soapcpp2 -p$(WSNAME) -i -n -c ${WSNAMEsbf999pt老虎机手机版}.h

stdsoap2.o:$(GSOAP_ROOT)/stdsoap2sbf999pt老虎机手机版.c

$(CC) -c $?

#编译一样天生规则的.o文件

$(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}client.c ${WSNAME}test.c $(ALL_OBJS) stdsoap2.o

$(CC) ${WSNAME}test.o ${WSNAME}client.o $(CLIENT_OBJS) -o ${WSNAME}test

cl:

rm -f *.o *.xml *.a *.wsdl *.nsmap $(WSNAME)H.h $(WSNAME)C.c $(WSNAME)Server.c $(WSNAME)Cliensbf999pt老虎机手机版t.c

$(WSNAME)Stub.* $(WSNAME)$(WSNAME)Proxy.* $(WSNAME)$(WSNAME)Object.* $(WSNAME)ServerLib.c

$(WSNAME)ClientLib.c $(WSNAME)server ns.xsd $(WSNAME)test

3、我们先来做一个 server 端,创建文件 addserver.c 文件,内容如下:

#include "addH.h"

#include "add.nsmap"

int main(int argc, char **argv)

{

int m, s; /* master and slave sockets */

struct soap add_soap;

soap_init(&add_soap);

soap_set_namespaces(&add_soap, add_namespaces);

if (argc

4、让我们的server跑起来吧:

shell>make

shell>./addserver 8888

假如终端打印出“Socket connection successful: massbf999pt老虎机手机版ter socket = 3”,那么你的 server 已经在前台 run 起来了,应该是值得痛快的!打开IE,键入http://localhost:8888,显示XML,办事已...〕Socket connection successful: slave socket = 4”,表示办事接管到了一次soap的连接。

发表评论
加载中...

相关文章