VS2008 thrift简单使用示例

6 篇文章 0 订阅

thrift-0.9.3 编译依赖第三方库 boost_1_53_0、OPENSSL

VS2008 编译thrift 上一篇文章已经介绍过,这里不再介绍,简单举例说明如何使用


IDL 文件 student.thrift


struct Student{

 1: i32 sno,
 2: string sname,
 3: bool ssex,
 4: i16 sage,
}
service Serv{
 void put(1: Student s),
}


使用如下命令生成相关代码

thrift-0.9.3.exe -r --gen cpp D:\TEST\demoThrift\student.thrift

如下图所示:


这些都是服务端 代码,添加工程即可编译。


由于thrift 依赖 OPENSSL 故需要引入库 

#pragma comment (lib, "ssleay32.lib")
#pragma comment(lib, "libeay32.lib")

还需要引入thrift的静态库 

#pragma comment (lib, "libthrift.lib")


还有BOOST的相关库。


同理,客户端也需要引入这些库。


服务端代码

生成的就是服务端代码,引用即可,主函数在 Serv_server.skeleton.cpp 文件里。


客户端代码


#include <iostream>
#include"../gen-cpp/Serv.h"
#include <transport/TSocket.h>
#include <transport/TBufferTransports.h>
#include <protocol/TBinaryProtocol.h>

using namespace apache::thrift;
using namespace apache::thrift::protocol;
using namespace apache::thrift::transport;

using boost::shared_ptr;
using namespace std;

#pragma comment (lib, "libthrift.lib")
#pragma comment (lib, "ssleay32.lib")
#pragma comment(lib, "libeay32.lib")
//#pragma comment (lib, "libthriftnb.lib")

int main()
{
	boost::shared_ptr<TSocket> socket(new TSocket("localhost", 9090));
	//对接nonblockingServer时必须的,对普通server端时用boost::shared_ptr<TTransport> transport(new TBufferedTransport(socket));
	//boost::shared_ptr<TTransport> transport(new TFramedTransport(socket));
	boost::shared_ptr<TTransport> transport(new TBufferedTransport(socket));

	boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));
	ServClient client(protocol);

	//设置发送、接收、连接超时
	socket->setConnTimeout(2000);
	socket->setRecvTimeout(2000);
	socket->setSendTimeout(2000);

	transport->open();

	//insert your code here  
	Student stu;
	stu.sno = 1;
	stu.sname = "lz";
	stu.ssex = 0;
	stu.sage = 25;
	client.put(stu);

	transport->close();

	cout<<"send success!\n";

	return 0;
}

编译报错,需要引用 两个CPP文件 Serv.cpp、 student_types.cpp


如果调试运行,报 无法定位序数350于动态链接库  时,需要在EXE的同级目录下 添加OPENSSL 的DLL文件  ,如图




具体见云盘

http://pan.baidu.com/s/1qYzqTWw

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值