2024年6月3日发(作者:)

Generated by Foxit PDF Creator © Foxit Software

For evaluation only.

Linux下gsoap的使用及移植

1、 下载gsoap

在gsoap的官网中可以找到最新的gsoap安装包及相关文档

gsoap官网:/~engelen/

下载地址:/projects/gsoap2/files/

2、 安装gsoap

a、 解压zip压缩包

命令:unzip gsoap_

b、 进入解压后生成的文件夹gsoap-2.8

命令:cd gsoap-2.8/

c、 切换到root用户

命令:su

输入密码

d、 配置编译环境

在gsoap-2.8/文件夹下执行configure文件,自动配置编译环境

命令:./configure

e、 编译连接

命令:make

f、 安装gsoap

命令:make install

安装完毕可用wsdl2h或soapcpp2查看gsoap是否已经安装成功

看到上述两个命令的返回说明安装成功

3、 应用实例

wsdl2h -o outfile.h 实现wsdl文件到h文件的数据映射

soapcpp2 -c outfile.h生成相应的底层通信stub,strech程序

首先新建一个文件夹名为gsoap;然后

(1) 不使用wsdl2h

a、 不使用wsdl2h我们可以直接从.h文件来生成代码。我们先定义一个函数声明文

件,用来定义接口函数,名称为add.h,内容如下:

//gsoapopt cw

//gsoap ns2 schema namespace: urn:add

//gsoap ns2 schema form: unqualified

//gsoap ns2 service name: add

//gsoap ns2 service type: addPortType

//gsoap ns2 service port:/~engelen/

//gsoap ns2 service namespace: urn:add

//gsoap ns2 service transport: /soap/http

//gsoap ns2 service method-style: add rpc

//gsoap ns2 service method-encoding:

add /soap/encoding/

//gsoap ns2 service method-action: add ""

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

b、 执行soapcpp2 –c add.h,自动生成一些远程调用需要的文件

c、 接下来写一个服务端,创建文件addserver.c

Generated by Foxit PDF Creator © Foxit Software

For evaluation only.

#include "soapH.h"

#include ""

int main(int argc, char **argv)

{

int m, s;

struct soap add_soap;

soap_init(&add_soap);

soap_set_namespaces(&add_soap, namespaces);

if (argc < 2) {

printf("usage: %s n", argv[0]);

exit(1);

}

else

{

m = soap_bind(&add_soap, NULL, atoi(argv[1]), 100);

if (m < 0)

{

soap_print_fault(&add_soap, stderr);

exit(-1);

}

fprintf(stderr, "Socket connection successful: master socket = %dn", m);

for (;;)

{

s = soap_accept(&add_soap);

if (s < 0)

{

soap_print_fault(&add_soap, stderr);

exit(-1);

}

fprintf(stderr, "Socket connection successful: slave socket = %dn", s);

soap_serve(&add_soap);

soap_end(&add_soap);

}

}

return 0;

}

int ns2__add(struct soap *add_soap, int num1, int num2, int *sum)

{

*sum = num1 + num2;

return 0;

}

d、 接着写一个客户端,文件名为addclient.c

#include "soapStub.h"