1、使用cmake_tars_serve.sh生成模板
/usr/local/tars/cpp/script/cmake_tars_server.sh TestApp StructServer Struct
生成结构如下 2、进入src目录,修改Struct.tars文件,增加testStruct(…)函数 3、删除Struct.h,执行指令:
/usr/local/tars/cpp/tools/tars2cpp Struct.tars
重新生成Struct.h
4、打开Struct.h,查找Tars转化后testStruct(…)的定义: 将函数的定义复制粘贴到StructImpl.h中: 在StructImp.cpp中实现testStruct函数: 5、再次进入build目录下,执行如下
cmake ..
make -j4
make tar
build目录下会生成打包文件
6、编写客户端代码 将服务端的Struct.tars、Struct.h文件拷贝到客户端,新建main.cpp
#include <iostream>
#include "servant/Communicator.h"
#include "Calc.h"
using namespace std;
using namespace TestApp;
using namespace tars;
int main(int argc,char ** argv)
{
Communicator comm;
try
{
CalcPrx prx;
comm.stringToProxy("TestApp.CalcServer.CalcObj@tcp -h 192.168.28.129 -p 27222" , prx); // -h xxx 填对应的地址
try
{
float ret = 0.f;
int iRet = prx->testCalc(5.1, 6.3, ret); // 同步调用
cout<<"ret:"<< ret <<endl;
}
catch(exception &ex)
{
cerr << "ex:" << ex.what() << endl;
}
catch(...)
{
cerr << "unknown exception." << endl;
}
}
catch(exception& e)
{
cerr << "exception:" << e.what() << endl;
}
catch (...)
{
cerr << "unknown exception." << endl;
}
return 0;
}
新建Makefile文件
#-----------------------------------------------------------------------
APP :=TestApp
TARGET :=TestStruct
CONFIG :=
STRIP_FLAG := N
LIB +=
#-----------------------------------------------------------------------
include /usr/local/tars/cpp/makefile/makefile.tars
#-----------------------------------------------------------------------
执行make,然后执行./TestStruct。
常见报错分析: 可能原因: 1、服务端代码写法有问题: 注意:要写Tars框架的数据类型,转换关系如下: 2、客户端代码的proxy写法有问题: 到不到对应的proxy,最终查找失败报错。
|