hessiancpp编译和使用(C++版)

本文详细介绍了如何编译和使用C++实现的Hessiancpp,包括下载源码、解决编译问题、启动Hessian服务器、修改客户端代码以及源码分析,特别强调了hessiancpp仅实现客户端,需要配合服务端才能工作。
摘要由CSDN通过智能技术生成

个人博客:戳我,戳我

许下的承诺

前两篇博客Hessian通信案例(java)Hessian源码分析(java)介绍了Java版的hessian的使用以及源码分析。当时也说过打算写一下C++版的hessian的使用和源码分析,现在就是兑现承诺的时候了。其实我项目中实际用到的是C++版的hessian,java版的hessian是我最初接触用来理解hessian,并进行联调测试的部分。

hessian的官网上也提供了C++版的hessian的实现。只不过当时在网上找到的说法是hessiancpp的活跃度比较低,而且编译出问题很多,但是还是决定自己亲自一试,毕竟”绝知此事要躬行”嘛,嘿嘿!当然也有其他版本的C++实现,比如hessianorb项目

Hessiancpp编译

现在是回过头来写,故早先编译碰到的问题我已经没办法复现,此处就只记录正确的编译步骤和方法。

下载hessiancpp

到官网下载源码包:https://sourceforge.net/projects/hessiancpp/,我自己当时的版本是hessiancpp-hessaincpp-1.1.0.tar.gz。

解压编译

解压上面下载的tar.gz压缩包

tar  zxvf  hessiancpp-hessaincpp-1.1.0.tar.gz 

然后进入顶层目录hessiancpp:

cd hessaincpp

你可以先查看此目录下的Makefile文件,然后试着执行:

make all

结果,不出所料,编译出错,错误如下:

In file included from hessian_proxy.cpp:19:0:
hessian_proxy.h:31:19: 致命错误:ssl++.h:没有那个文件或目录
编译中断。
make: * [hessian_proxy.o] 错误 1

可见缺少了一个叫做ssl++.h的头文件,我们再仔细查看Makefile文件,可以看到第一行代码是:

SSLPP=../sslpp

显然需要另外一个库。这个库就是提供http代理的功能。网上有人碰到这个问题后,选择了libcurl重写一个http代理,据说还可行。

言归正传,我们需要一个叫做sslpp的库。

下载hessian-sslpp


去github下载: https://github.com/ksturner/hessian/tree/master/sslpp

常规操作,解压,然后进入顶层目录,然后查看Makefile文件,然后尝试执行make all编译。果然又出错了。

查看INSTALL文件:

SSLPP was developed on a Fedora Core 2 x86_64 system, using

  • GCC 3.3.3
  • OpenSSL 0.9.7a
  • BOOST 1.31.0
  • shared library

可以看到编译SSLPP需要的依赖。我碰到的编译错误是没有安装BOOST库。那么就去安装吧:

yum install boost boost-devel  boost-doc

完事之后再试着执行make all ,make install看看。如果没有错误,那么基本就是可以了,如果碰到了错误,那么没办法,只能一步步解决。

这里主要是需要编译生成的libsslpp.so这个动态库。

继续编译hessiancpp

回到之前对hessiancpp的编译,修改下Makefile文件中SSLPP这个宏的值,根据sslpp的编译修改。然后执行:

make all

正常情况就不会有问题了,编译成功。在当前目录下生成了一个libhessian.so和一个main可执行程序和main_dyn可执行程序。

大功告成!!!

使用hessiancpp

首先要明白,hessiancpp只是实现了hessian的客户端,具体就是实现了hessian的序列化和反序列算法以及使用sslpp作为一个http代理客户端。故如果要使用hessiancpp,还需要配合一个hessian服务端,这里就用之前博文中介绍过的java 版hessian server作为服务端。

启动hessian server

假设服务端提供了两个接口函数,具体请看下图:
函数功能都是返回”Hello, world,my name is nick!”。

需要注意的是,此时这个服务端的地址为:* http://[IP]:8080/hessian_server/ServerMachineTest *

然后,启动服务端。

修改客户端代码

回到hessiancpp目录下,修改main.cpp。主要修改的代码是:

......
cout 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值