1. gsoap的好处就不用说了:百度百科

2. gsoap的下载地址:项目地址,目前我使用的是2.8.15版本

3. 开发环境:Ubuntu13.10

4. 具体操作步骤(以简单相加为例):

  1)编写add.h(头文件)

//gsoap ns service name: calc
//gsoap ns service protocol: SOAP
//gsoap ns service style: rpc
//gsoap ns service encoding: encoded
//gsoap ns service namespace: http://localhost:8888
//gsoap ns service location: http://localhost:8888
//gsoap ns service port: http://localhost:8888 int ns__add( int num1, int num2, int* sum );

  2)编写addserver.cpp(服务器)

#include "soapcalcService.h"                    /* 与add.h中第一行ns有关 */
#include "calc.nsmap" /* 与add.h中第一行ns有关 */ int main(int argc, char **argv)
{ calcService calc; /* 创建calc对象 */
if (argc < )
calc.serve(); /* serve as CGI application */
else
{ int port = atoi(argv[]);
if (!port)
{ fprintf(stderr, "Usage: server <port>\n");
exit();
}
/* run iterative server on port until fatal error */
if (calc.run(port)) /* 运行在port端口上 */
{ calc.soap_stream_fault(std::cerr);
exit(-);
}
}
return ;
} int calcService::add(int a, int b, int *result) /* 在此处实现add() */
{ *result = a + b;
return SOAP_OK;
}

  3)编写addclient.cpp(客户端)

#include "soapcalcProxy.h"                      /* 与add.h第一行的ns有关 */
#include "calc.nsmap" /* 与add.h第一行的ns有关 */
#include <stdio.h>
#include <stdlib.h>
const char server[] = "127.0.0.1:4567"; int main(int argc, char **argv)
{ if (argc < )
{ fprintf(stderr, "Usage: client num1 num2\n");
exit();
}
int a, b, result;
a = (int)(strtod(argv[], NULL)); /* str转double再转int */
b = (int)(strtod(argv[], NULL));
calcProxy calc; /* 创建calc对象 */
calc.soap_endpoint = server; /* 设定server */
calc.add(a, b, &result); /* 执行add() */
if (calc.error)
calc.soap_stream_fault(std::cerr);
else
printf("result = %d\n", result); /* 打印消息 */
return ;
}

  4)编写Makefile文件

# this is a Makefile to build client and server
# please setting the GSOAP_ROOT first.
# build procedure(EXAMPLE): server run on pc, then client run on arm
# step1: setting GSOAP_ROOT
# step2: setting OBJ_NS   # the first line in add.h
# step3: setting OBJ_NAME  # the basename of filename of add.h
# step4: setting CC and CXX
# step4: make OBJ_NS := calc
OBJ_NAME := add
GSOAP_ROOT := /home/scue/work/gsoap_2.8.15/gsoap
INCLUDE := -I$(GSOAP_ROOT) CC := clang++
GCC := clang++
#CC := arm-linux-g++
#CXX := arm-linux-g++ CFLAGS += -w
CXXFLAGS += -w OBJ_SERVER := soapC.o stdsoap2.o soap$(OBJ_NS)Service.o $(OBJ_NAME)server.o
OBJ_CLIENT := soapC.o stdsoap2.o soap$(OBJ_NS)Proxy.o $(OBJ_NAME)client.o all:
@make soap
@make server
@make client server: $(OBJ_SERVER)
$(CXX) $(CXXFLAGS) $(INCLUDE) $^ -o $@
client: $(OBJ_CLIENT)
$(CXX) $(CXXFLAGS) $(INCLUDE) $^ -o $@ .PHONY:soap
soap:
@cp -v $(GSOAP_ROOT)/stdsoap2.* .
@$(GSOAP_ROOT)/bin/linux386/soapcpp2 -i $(OBJ_NAME).h soapqt:
@mkdir -p $(OBJ_NS)qtclient
@cp -v soapH.h soapStub.h stdsoap2.h soap$(OBJ_NS)Proxy.h \
soapC.cpp stdsoap2.cpp soap$(OBJ_NS)Proxy.cpp $(OBJ_NS).nsmap \
$(OBJ_NS)qtclient/ # -c 生成C的文件
# -i 生成C++的文件 .PHONY:clean
clean:
rm -f server client *.o
distclean:
rm -f server client *.o ns* soap* *.xml *.nsmap *.wsdl stdsoap2.*

  5)编译及试验

make
./server
./client #将会返回5,也可以直接在浏览器中输入http://localhost:4567进行验证

总结:使用C++编写将会轻松很多。

〖Linux〗使用gsoap搭建web server(C++)的更多相关文章

  1. 〖Linux〗使用gsoap搭建web server(C)

    1. gsoap的好处就不用说了:百度百科 2. gsoap的下载地址:项目地址,目前我使用的是2.8.15版本 3. 开发环境:Ubuntu13.10 4. 具体操作步骤(以简单相加为例): 1) ...

  2. express快速搭建web server

    安装express4.x npm install -g express npm install -g express-generator //express命令行工具在4.x分离出来了 express ...

  3. 从零开始的ESP8266探索(1)-使用Server功能搭建Web Server

    https://blog.csdn.net/Naisu_kun/article/details/80398667 文件系统 https://blog.csdn.net/solar_Lan/articl ...

  4. python搭建web server

    假设你急需一个简单的Web Server,但你又不想去下载并安装那些复杂的HTTP服务程序,比方:Apache,ISS等.那么, Python 可能帮助你.使用Python能够完毕一个简单的内建 HT ...

  5. Linux服务器上搭建web项目环境

    一.下载并安装jdk 去官网下载linux系统上jdk的安装包jdk-8u181-linux-x64.tar.gz,在Linux的/usr目录下新建文件夹java,可以使用命令:cd /usr    ...

  6. virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续)

    virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续) 第一次接触到 linux,不知道linux的确很强大,然后用virtualbox ...

  7. linux系统下搭建自己的web服务器

    之前在windows 2008 server上搭建了一个用于测试的web服务器,但是在打开网站的时候特别的慢,尤其是图片的加载都会失败,当时以为是路径的问题,但是在服务器上自己打开都特别慢,自己实在找 ...

  8. (总结)CentOS Linux搭建SVN Server配置详解

         PS:虽然在公司linux服务器上搭建过几次svn,但是时间长了,有些配置操作会忘掉,上网搜索的结果都不大满意,有幸在前几天看到一篇算是最满意的svn搭建文章,转载一下以备以后使用,原文地址 ...

  9. jexus asp.net Linux Web Server

    Jexus简介 Jexus web server for linux 是运行在Linux上的Web服务器.其安装和部署及其简单,直接支持Asp.net . 下载Jexus wget http://li ...

随机推荐

  1. shell中的括号(小括号,中括号,大括号)及单引号、 双引号,反引号(``)

    一.小括号,园括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号, ...

  2. 转 Objective-C中不同方式实现锁(一)

    为什么需要使用锁,当然熟悉多线程的你,自然不会对它觉得陌生. 那你在代码中是否很好的使用了锁的机制呢?你又知道几种实现锁的方法呢? 今天一起来探讨一下Objective-C中几种不同方式实现的锁,在这 ...

  3. Spring3.2.3+Quartz2.2.1 整合配置

    步骤: 1.下载相关包 quartz-2.2.1.jar quartz-jobs-2.2.1.jar spring相关jar包 2.编写配置文件静态 <bean id="activat ...

  4. unity3d-地图制作之光照贴图Lightmapping

    今天无聊随便翻看了暗黑战神的场景资源,发现了一个以前没怎么注意的静态场景优化问题. 什么是静态场景,也就是说这个场景是不会变化.比如MMO游戏中选择人物的场景. 就拿默认的暗黑战神的选择人物场景来看, ...

  5. [4] 圆锥(Cone)图形的生成算法

    顶点数据的生成 bool YfBuildConeVertices ( Yreal radius, Yreal height, Yuint slices, YeOriginPose originPose ...

  6. OTL翻译(10) -- OTL的流缓冲池

    OTL的流缓冲池 一般来讲,流一般作为一个局部的变量被使用,当使用完毕后就立刻关闭,如果需要再次使用就需要再次的声明变量,如此循环.OTL流的缓冲池(内存池)是一个解决以往的流性能低下的一个机制.当流 ...

  7. oracle和mysql功能相同的函数

    wm_concat ---->mysql 的group_concat decode (两条件的)----->mysql 的 if decode (3个及以上条件的)---------> ...

  8. go语言进阶之为结构体类型添加方法

    1.为结构体类型添加方法 示例: package main import "fmt" type Person struct { name string //名字 sex byte ...

  9. C语言存储类型

    看c专家编程,有说存储类型一直不太清楚.看到一篇文章讲解c的存储类型,讲解了c语言中的各种变量的存储类型,而且是从进程.内存的角度讲解的,以前从没有这样理解过,觉得挺有用的,在这里转载过来. 首先要来 ...

  10. 网站日志访问记录组件UserVisitLogsHelp开源了!

    之前在<一种基于自定义代码记录用户访问日志在Sharepoint网站的应用方法!>一文利用本人几年前的开发的UserVisitLogsHelp组件进行了网站用户访问日志记录,可用于网站分析 ...