Thrift2
来源:互联网 发布:帝国cms根目录 编辑:程序博客网 时间:2024/06/08 16:12
Thrift可以实现C++、Java、Python等多种语言的自动生成,此处以C++为例。
本文共5部分,其中1,2和3部分为重点。
1. 编写[.thrift]文件
你可以google到官方的实例如下:
- struct Student{
- 1: i32 sno,
- 2: string sname,
- 3: bool ssex,
- 4: i16 sage,
- }
- service Serv{
- void put(1: Student s),
- }
将上述代码保存为student.thrift文件。
2. 自动生成服务器端程序
在Terminal中输入如下命令,可自动生成[.cpp]和[.h]文件。
- thrift -r --gen cpp student.thrift
得到的文件如下:
- Serv.cpp
- Serv.h
- Serv_server.skeleton.cpp
- student_constants.cpp
- student_constants.h
- student_types.cpp
- student_types.h
其中Serv_server.skeleton.cpp中有服务器端运行的main函数。这些文件名的Serv和student与你最初创建的thrift文件有关。
3. 编写客户端程序
- #include "Serv.h" // Your .h File
- #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;
- int main(int argc, char **argv) {
- boost::shared_ptr<TSocket> socket(new TSocket("localhost", 9090));
- boost::shared_ptr<TTransport> transport(new TBufferedTransport(socket));
- boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));
- transport->open();
- // Your Codes
- transport->close();
- return 0;
- }
4. 编译/链接
- g++ -g -I/home/michael/opt/include/thrift -L/home/michael/opt/lib/ -lthrift Serv.cpp student_types.cpp student_constants.cpp Serv_server.skeleton.cpp -o server
- g++ -g -I/home/michael/opt/include/thrift -L/home/michael/opt/lib/ -lthrift -lm -pthread -lz -lrt -lssl Serv.cpp student_types.cpp student_constants.cpp client.cpp -o client
5. 运行
- ./server
- ./client
0 0
- Thrift2
- thrift2访问hbase
- HBase thrift/thrift2 使用指南
- HBase thrift2 TIOError
- ambari 安装hbase thrift2服务
- 【hbase】thrift2 集群 && 指定端口
- python使用thrift2协议connect hbase
- 用c++ 通过thrift2 访问hbase数据库
- hbase thrift2 server , Bad version in readMessageBegin
- HBase Thrift2 CPU过高问题分析
- golang使用thrift2协议connect hbase
- PHP和Golang使用Thrift1和Thrift2访问Hbase0.96.2(ubuntu12.04)
- 构造方法的访问级别之private
- sstream的用法
- 2 - 解读zookeeper的配置项
- 进程内缓存框架 EhCache
- Thrift使用入门(1) - Thrift概述及其安装
- Thrift2
- Java中“泛型之泛型类、泛型方法“和'泛型通配符"的应用总结
- effective stl 第一部分:容器
- 初试cocos2d-x,编译运行cocos2d-x范例的过程和遇到的问题。
- OCP-1Z0-新051-61题版本-22
- iOS异步请求下载图片
- Implicit Primitive Type Conversion Rule
- Win7 + VirtualBox 安装 MacOS X 10.9 Mavericks 操作步骤
- 黑马程序员_事件