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++)相关推荐

  1. Linux 环境编程 day01 Linux系统介绍、GNU编译工具、静态/共享库、环境变量表

    Linux 环境编程 day01 Linux系统介绍.GNU编译工具.静态/动态库.环境变量表 学习Linux环境编程的原因 UNIX系统介绍 Linux系统介绍 GNU工程 POSIX标准 GNU通 ...

  2. linux环境变量和linux命令export

    什么是环境变量,Linux环境变量及作用 变量是计算机系统用于保存可变值的数据类型,我们可以直接通过变量名称来提取到对应的变量值.在 Linux 系统中,环境变量是用来定义系统运行环境的一些参数,比如 ...

  3. 基于linux环境pdf,基于Linux环境下的Snif论r设计与芸}瑰.PDF

    基于Linux环境下的Snif论r设计与芸}瑰 基于Linux环境下的Snif论r设计与芸}瑰 李刍每莹周姆 铬编程技I:,夏‰骼r实现方法进行了棵耐 7IP.w.h 关键词嗅挺器,滑动窗口,'r(: ...

  4. linux 环境启动redis,linux环境下启动redis的方法

    linux环境下启动redis的方法 发布时间:2020-08-24 16:15:54 来源:亿速云 阅读:88 作者:小新 这篇文章主要介绍了linux环境下启动redis的方法,具有一定借鉴价值, ...

  5. Linux 环境下载百度Linux 环境下载百度云资源,Firefox插件(百度网盘助手)

    Linux 环境下载百度云资源,Firefox插件(百度网盘助手) https://blog.csdn.net/a499957739/article/details/79593286 转载上面链接的, ...

  6. Linux环境进程间通信---信号(下)

    一.信号生命周期 从信号发送到信号处理函数的执行完毕 对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个重要事件来刻画:信号诞生:信号在进程 ...

  7. 在windows上模拟linux环境,MSYS2——Windows平台下模拟linux环境的搭建-Go语言中文社区...

    最近从MSYS1.0迁移到了MSYS2.0,简单讲,MSYS2.0功能更强大,其环境模拟更加符合linux.虽然本身来自cygwin,但其集成了pacman软件管理工具,很有linux范,并且可以直接 ...

  8. linux qt调用摄像头,Qt5下实现摄像头预览及捕获图像方法实例

    Step4:修改mainwindow.cpp 源码如下 #include "mainwindow.h" #include "ui_mainwindow.h" M ...

  9. rocketmq linux环境下载地址,Linux下RocketMQ下载安装教程

    一.下载 1.官网下载:下载地址 2.百度网盘下载:下载地址 提取码:0g5a java开发工具下载地址及安装教程大全,点这里. 更多深度技术文章,在这里. 二.安装及启动 1.将zip文件上传到li ...

最新文章

  1. python实现文件下载-Python实现HTTP协议下的文件下载方法总结
  2. Emit应用中的常用技巧
  3. 计算机网络基础知识,仅此一篇足矣
  4. java token生成和验证_SpringBoot集成JWT生成token及校验方法过程解析
  5. JavaScript对象的chapterI
  6. ORACLE 查询所有表、外键、主键等信息
  7. 联调测试是什么意思_功能模块提测前注意这几件事,再也不怕被测试diss了
  8. MongoDB复制集安全认证
  9. Android进阶:性能优化篇 Android进阶:性能优化篇
  10. System Center Configuration Manager 2016 域准备篇(Part2)
  11. XAF How to: Implement Domain Components(如何实现领域构件)
  12. Air系列模块常见问题列表
  13. 信息学奥赛C++编程:计算分数加减表达式的值
  14. 全网域名已注册、未注册批量查询工具
  15. Chapter 6-Blurring Things Up之Depth Imposter
  16. APP变现渠道该如何选择猫眼聚合SDK用经验为您解答
  17. 云原生应用负载均衡系列 (2): 入口流量分发、容错与高可用调度
  18. sap 新手入门第一课(新装SAP IDES必须做的操作)
  19. 莫队算法二(树上莫队cot2,Haruna’s Breakfast)
  20. win7怎么修改服务器端口,教你在Win7中如何轻松修改3389远程桌面端口

热门文章

  1. Altium Designer笔记2
  2. mariadb 基础使用
  3. MySQL里面的CONNECTION_ID
  4. python中open函数的使用
  5. idea导入gradle
  6. 安装完之后设置动态ip地址
  7. 2017年5个最佳网络监控工具 你知道哪些
  8. 文化部随机抽查50家网络表演平台 看看有没有那种内容
  9. 浅尝key-value数据库(三)——MongoDB的分布式
  10. 如何开展软件架构之需求分析3