thrift windows vs2013测试例子

首先需要编译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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值