linux环境调用gsoap,Linux下gSOAP的使用 (c++)
1、下载gSOAP
在gSOAP官网中可以找到最新的gSOAP安装包以及相关的文档
gSOAP官网:http://www.cs.fsu.edu/~engelen/soap.html
gSOAP下载地址:http://sourceforge.net/projects/gsoap2/files/
2、安装gSOAP
a、解压zip压缩包
命令:unzip gsoap_2.7.17.zip
b、进入解压后生成的文件夹gsoap-2.7
命令:cd gsoap-2.7/
c、切换到root用户
命令:su
输入密码
d、配置编译环境
在gsoap-2.7/文件夹下有一个configure文件,执行它,自动配置编译环境
命令:./configure
e、编译连接
命令:make
f、安装gSOAP
命令:make install
可用wsdl2h或者soapcpp2查看gSOAP是否已经安装成功
用命令whereis gsoap查看gSOAP安装到的位置
3、编写calc.h文件
a、新建一个文件夹calc
命令:mkdir calc
b、进入calc
命令:cd calc
c、创建文件calc.h,在文件中写入以下内容,保存
//gsoap ns service name: calc Simple calculator service
//gsoap ns service style: rpc
//gsoap ns service encoding: encoded
//gsoap ns service namespace: http://localhost/calc.wsdl
//gsoap ns service location: http://localhost/server.cgi
//gsoap ns schema namespace: urn:calc
int ns__add(double a, double b, double *result);
int ns__sub(double a, double b, double *result);
int ns__mul(double a, double b, double *result);
int ns__div(double a, double b, double *result);
int ns__pow(double a, double b, double *result);
注意:
a、以上的几行注释中,gsoap ns service不能删除,但可以修改
b、ns__add等的ns后面是两个下划线
4、调用soapcpp2自动生成相关的文件
(为了方便代码管理,在calc文件夹下新建一个soap)
当前工作目录为calc/soap
命令:soapcpp2 -i ../calc.h
注意:
可能会报错,一般是不知道gsoap相关include文件的位置,可以使用
命令soapcpp2 -i ../calc.h -I /usr/include/gsoap
5、编写服务器端代码:server.cpp
当前工作目录:calc
#include "soap/soapcalcService.h"
#include "soap/calc.nsmap" //这个头文件不加的话,在链接的时候,stdsoap2.cpp里面会报无法引用namespaces
#include
using namespace std;
int main(int argc, char **argv) {
calcService calc;
int port = 65531;
if (calc.run(port)) {
cerr << "Calc service run failed" << endl;
exit(0);
}
return 0;
}
int calcService::add(double a, double b, double* result) {
*result = a + b;
return SOAP_OK;
}
int calcService::sub(double a, double b, double* result) {
*result = a - b;
return SOAP_OK;
}
int calcService::mul(double a, double b, double* result) {
*result = a * b;
return SOAP_OK;
}
int calcService::div(double a, double b, double* result) {
if (b) {
*result = a / b;
} else {
return SOAP_FAULT;
}
return SOAP_OK;
}
int calcService::pow(double a, double b, double *result) {
*result = ::pow(a, b);
if (soap_errno == EDOM) {
char *s = (char*) soap_malloc(this, 1024);
sprintf(s, "Can't take the power of %f to %f", a, b);
sprintf(s,"Can't take power of %f to %f",a, b);
return SOAP_FAULT;
}
return SOAP_OK;
}
6、编写客户端代码:client.cpp
#include "soap/soapcalcProxy.h"
#include "soap/calc.nsmap"
#include
using namespace std;
int main(int argc, char **argv) {
double a = 4;
double b = 2;
double result;
calcProxy calc;
calc.soap_endpoint = "http://localhost:65531";
calc.add(a,b,&result);
cout<
calc.sub(a,b,&result);
cout<
linux环境调用gsoap,Linux下gSOAP的使用 (c++)相关推荐
- Linux 环境编程 day01 Linux系统介绍、GNU编译工具、静态/共享库、环境变量表
Linux 环境编程 day01 Linux系统介绍.GNU编译工具.静态/动态库.环境变量表 学习Linux环境编程的原因 UNIX系统介绍 Linux系统介绍 GNU工程 POSIX标准 GNU通 ...
- linux环境变量和linux命令export
什么是环境变量,Linux环境变量及作用 变量是计算机系统用于保存可变值的数据类型,我们可以直接通过变量名称来提取到对应的变量值.在 Linux 系统中,环境变量是用来定义系统运行环境的一些参数,比如 ...
- 基于linux环境pdf,基于Linux环境下的Snif论r设计与芸}瑰.PDF
基于Linux环境下的Snif论r设计与芸}瑰 基于Linux环境下的Snif论r设计与芸}瑰 李刍每莹周姆 铬编程技I:,夏‰骼r实现方法进行了棵耐 7IP.w.h 关键词嗅挺器,滑动窗口,'r(: ...
- linux 环境启动redis,linux环境下启动redis的方法
linux环境下启动redis的方法 发布时间:2020-08-24 16:15:54 来源:亿速云 阅读:88 作者:小新 这篇文章主要介绍了linux环境下启动redis的方法,具有一定借鉴价值, ...
- Linux 环境下载百度Linux 环境下载百度云资源,Firefox插件(百度网盘助手)
Linux 环境下载百度云资源,Firefox插件(百度网盘助手) https://blog.csdn.net/a499957739/article/details/79593286 转载上面链接的, ...
- Linux环境进程间通信---信号(下)
一.信号生命周期 从信号发送到信号处理函数的执行完毕 对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个重要事件来刻画:信号诞生:信号在进程 ...
- 在windows上模拟linux环境,MSYS2——Windows平台下模拟linux环境的搭建-Go语言中文社区...
最近从MSYS1.0迁移到了MSYS2.0,简单讲,MSYS2.0功能更强大,其环境模拟更加符合linux.虽然本身来自cygwin,但其集成了pacman软件管理工具,很有linux范,并且可以直接 ...
- linux qt调用摄像头,Qt5下实现摄像头预览及捕获图像方法实例
Step4:修改mainwindow.cpp 源码如下 #include "mainwindow.h" #include "ui_mainwindow.h" M ...
- rocketmq linux环境下载地址,Linux下RocketMQ下载安装教程
一.下载 1.官网下载:下载地址 2.百度网盘下载:下载地址 提取码:0g5a java开发工具下载地址及安装教程大全,点这里. 更多深度技术文章,在这里. 二.安装及启动 1.将zip文件上传到li ...
最新文章
- python实现文件下载-Python实现HTTP协议下的文件下载方法总结
- Emit应用中的常用技巧
- 计算机网络基础知识,仅此一篇足矣
- java token生成和验证_SpringBoot集成JWT生成token及校验方法过程解析
- JavaScript对象的chapterI
- ORACLE 查询所有表、外键、主键等信息
- 联调测试是什么意思_功能模块提测前注意这几件事,再也不怕被测试diss了
- MongoDB复制集安全认证
- Android进阶:性能优化篇 Android进阶:性能优化篇
- System Center Configuration Manager 2016 域准备篇(Part2)
- XAF How to: Implement Domain Components(如何实现领域构件)
- Air系列模块常见问题列表
- 信息学奥赛C++编程:计算分数加减表达式的值
- 全网域名已注册、未注册批量查询工具
- Chapter 6-Blurring Things Up之Depth Imposter
- APP变现渠道该如何选择猫眼聚合SDK用经验为您解答
- 云原生应用负载均衡系列 (2): 入口流量分发、容错与高可用调度
- sap 新手入门第一课(新装SAP IDES必须做的操作)
- 莫队算法二(树上莫队cot2,Haruna’s Breakfast)
- win7怎么修改服务器端口,教你在Win7中如何轻松修改3389远程桌面端口