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
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"


发布评论