thrift小试--C++
【转自】http://blog.csdn.net/poechant/article/details/6618284#
Thrift可以实现C++、Java、Python等多种语言的自动生成,此处以C++为例。
1. 编写[.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. 编写客户端程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #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)); ::SS::Student stu; ::SS::ServClient sn(protocol); transport->open(); sn.put(stu); transport->close(); return 0; } |
4. 编译/链接
1 2 3 | g++ -g -I /usr/include/thrift -L /usr/lib/ -lthrift -DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H Serv.cpp student_types.cpp student_constants.cpp Serv_server.skeleton.cpp -o server g++ -g -I /usr/include/thrift -L /usrlib/ -lthrift -lm -pthread -lz -lrt -lssl -DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H Serv.cpp student_types.cpp student_constants.cpp client.cpp -o client |
5. 运行
./server
./client
分类:
[技术]c/c++
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2015-04-28 linux安装SVN
2015-04-28 Java web项目在linux环境下自动编译和部署脚本
2012-04-28 socket[转]--有时间再研究吧