码迷,mamicode.com
首页 > Windows程序 > 详细

thrift windows vs2013测试例子

时间:2016-05-06 13:05:43      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:

首先需要编译thrift的compiler

源代码目录在:

\thrift-master\compiler\cpp

原来是vs2010的功能,用vs2013打开之后会提示升级,因为这只是一个工具,所以不需要升级,直接编译得到需要的exe

技术分享

编译之后得到一个thrift.exe,这个工具可以把中间代码生成对应的目标代码

 

生成需要的测试代码

在thrift.exe的目录中新建一个记事本,粘贴如下内容保存,之后把文件名改成student.thrift:

<span style="font-size:18px;">struct Student{
	i32 sno,
	string sname,
	bool ssex,
	i16 sage,
}
service Serv{
 void put(1: Student s),
}
</span>

在终端中输入以下命令:

<span style="font-size:18px;">thrift.exe -r --gen cpp student.thrift</span>


得到我们需要的文件夹gen-cpp,其中就是thrfit命令生成的代码

技术分享



在解决方案thrift中新建一个Server工程

把文件夹gen-cpp拷贝过去,文件夹目录的构成如下:

技术分享


在工程目录中引入gen-cpp中的.h和.cpp:

技术分享


把上面红框中.cpp文件中的内容拷贝到Server.cpp中,然后移除,加入对应的.lib:

技术分享


因为打算把Client发送的内容在Server一端中打印出来,所以在默认的ServHandler中修改对应的put方法内容为:

printf("sno=%d sname=%s ssex=%dsage=%d/n", s.sno, s.sname.c_str(), s.ssex, s.sage);

技术分享


在工程中设置对应的头文件目录,可以参考我的:

gen-cpp;..\cpp\src;..\cpp\openssl-1.0.1e;D:\boost_1_57_0;

库目录:

D:\boost\boost_1_57_0\bin\vc12-x64\lib;



同样的再新建一个Client工程

同样的可以参考3,也需要去掉

把文件夹gen-cpp拷贝过去,在把\thrift-master\tutorial\cpp目录下的CppClient.cpp也拷贝过去

文件夹目录的构成如下:

技术分享


工程目录如下:

技术分享


在工程中直接删掉进行Serv_server.skeleton.cpp,对Clien.cpp加入如下代码:

#include <thrift/transport/TSocket.h>
#include "Serv.h"
#include <thrift/protocol/TBinaryProtocol.h>
#include <thrift/server/TSimpleServer.h>
#include <thrift/transport/TServerSocket.h>
#include <thrift/transport/TBufferTransports.h>
#include <string>

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

using boost::shared_ptr;

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


int main(int argc, char** argv) {
	int port = 9090;
	shared_ptr<TTransport> socket(new TSocket("127.0.0.1", 60010));
	shared_ptr<TTransport> transport(new TBufferedTransport(socket));
	shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));
	ServClient client(protocol);


	Student s;
	s.sno = 123;
	s.sname = " zengraoli";
	s.ssex = 1;
	s.sage = 30;

	try{
		transport->open();

		client.put(s);

		transport->close();
	}
	catch (TException& tx){
		printf("ERROR:%s\n", tx.what());
	}
	getchar();
	return 0;
}

在工程中设置对应的头文件目录,可以参考我的:

gen-cpp;..\src;..\cpp\openssl-1.0.1e;D:\boost_1_57_0;

库目录:

D:\boost\boost_1_57_0\bin\vc12-x64\lib;


开始测试

首先打开Server运行:

技术分享

然后再打开Client,服务器的消息如下:

技术分享


整个工程(含lib库、测试例子、libevent、openssl)下载地址

http://download.csdn.net/detail/zengraoli/9510383



thrift windows vs2013测试例子

标签:

原文地址:http://blog.csdn.net/zengraoli/article/details/51320773

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!