当前位置:网站首页>thrift简单使用
thrift简单使用
2022-06-30 09:32:00 【Zip-List】
git clone https://github.com/apache/thrift.git
//官网readme.md
安装
安装bison flex包
https://blog.csdn.net/Tosonw/article/details/102640385
openssl/opensslv.h: No such file or directory
sudo apt-get install libssl-dev
thriftl.cc找不到
thrift updating lex.yythrift/thriftl.cc mv: cannot move ‘tmp-thriftl.cc’ to ‘…/lex.yythrift/thriftl.cc’: No such file or directory
https://github.com/sunchao/parquet-rs/issues/74
重新./boosttrap.sh + ./configure
make
make install
thrift --version
简单使用
https://diwakergupta.github.io/thrift-missing-guide/
https://blog.csdn.net/tuwenqi2013/article/details/105541475
---gen-cpp
---Serv_server.skeleton.cpp
---Serv.cpp
---Serv.h
---student_types.cpp
---student_types.h
cleint.cpp
server.cpp
student.thrift
1 定义thrift文件
student.thrift
使用, 且没有;
struct Student{
1: i32 sno,
2: string sname,
3: bool ssex,
4: i16 sage,
}
service Serv{
void put(1: Student s),
}
thrift -r --gen cpp student.thrift 生成gen-cpp文件夹
- 没有教程中的xxx_constant.cpp文件是因为thrift定义中没有const常量,不影响
- 生成文件Serv_server.skeleton.cpp中类似svr部分代码,不用处理,不会在生成的文件夹中写逻辑
2 server.cpp/client.cpp
server 实现put函数的handler
// This autogenerated skeleton file illustrates how to build a server.
// You should copy it to another filename to avoid overwriting it.
#include "gen-cpp/Serv.h""
#include <thrift/protocol/TBinaryProtocol.h>
#include <thrift/server/TSimpleServer.h>
#include <thrift/transport/TServerSocket.h>
#include <thrift/transport/TBufferTransports.h>
using namespace ::apache::thrift;
using namespace ::apache::thrift::protocol;
using namespace ::apache::thrift::transport;
using namespace ::apache::thrift::server;
class ServHandler : virtual public ServIf {
public:
ServHandler() {
// Your initialization goes here
}
void put(const Student& s) {
// Your implementation goes here
printf("put\n");
printf("name:%s\n", s.sname.c_str());
printf("sex:%d\n", s.ssex);
}
};
int main(int argc, char **argv) {
int port = 9090;
::std::shared_ptr<ServHandler> handler(new ServHandler());
::std::shared_ptr<TProcessor> processor(new ServProcessor(handler));
::std::shared_ptr<TServerTransport> serverTransport(new TServerSocket(port));
::std::shared_ptr<TTransportFactory> transportFactory(new TBufferedTransportFactory());
::std::shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory());
TSimpleServer server(processor, serverTransport, transportFactory, protocolFactory);
server.serve();
return 0;
}
client 与对应的handler服务器建立连接,进行远程调用
#include "gen-cpp/Serv.h"
#include </usr/local/include/thrift/transport/TSocket.h>
#include </usr/local/include/thrift/transport/TBufferTransports.h>
#include </usr/local/include/thrift/protocol/TBinaryProtocol.h>
#include <iostream>
using namespace apache::thrift;
using namespace apache::thrift::protocol;
using namespace apache::thrift::transport;
//using boost::shared_ptr;
int main(int argc, char **argv) {
std::shared_ptr<TSocket> socket(new TSocket("127.0.0.1", 9090));
std::shared_ptr<TTransport> transport(new TBufferedTransport(socket));
std::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));
transport->open();
//*****************添加部分******************
Student s;
s.sno = 123;
s.sname = "xiaoshe";
s.ssex = 1;
s.sage = 30;
ServClient client(protocol);
std::cout<<"client send a data"<<std::endl;;
client.put(s);
//*****************添加部分******************
transport->close();
return 0;
}
3 编译
g++ -g -o server -Ithrift ./gen-cpp/Serv.cpp ./gen-cpp/student_types.cpp server.cpp -lthrift
g++ -g -o client -Ithrift ./gen-cpp/Serv.cpp ./gen-cpp/student_types.cpp client.cpp -lthrift
cannot find libthrift.so
ldd ./server
sudo find / -name libthrift-0.17.0.so 看看是不是有这个文件
1、在usr/lib目录下有这些库文件
直接修复以下链接即可,例如依次执行
ln -s lib***.so.6(某个数字) lib***.so
2、在usr/lib目录下没有这些文件
直接在系统根目录中依次搜索这些库文件,并使用
sudo cp 库文件名 /usr/lib
命令将相应库文件拷贝到该目录中即可
边栏推荐
- JVM family
- Niuke IOI weekly competition 20 popularization group (problem solving)
- ES6 learning road 5 symbol
- Concatapter tutorial
- Enum demo
- Tablet PC based ink handwriting recognition input method
- Explanation on the use of password profiteering cracking tool Hydra
- Electron, which can wrap web page programs into desktop applications
- Tutorial for beginners of small programs day01
- Deep understanding of kotlin collaboration context coroutinecontext
猜你喜欢
ES6 learning path (II) let & const
Bottomsheetbehavior principle of realizing the home page effect of Gaode map
Distributed things
CentOS MySQL installation details
Microsoft. Bcl. Async usage summary -- in Net framework 4.5 project Net framework version 4.5 and above can use async/await asynchronous feature in C 5
Numpy (time date and time increment)
Summary of Android knowledge points and common interview questions
小程序手持弹幕的原理及实现(uni-app)
Cb/s Architecture - Implementation Based on cef3+mfc
(zero) most complete JVM knowledge points
随机推荐
4. use ibinder interface flexibly for short-range communication
Six implementation methods of singleton mode
Cronexpression expression explanation and cases
Talk about how the kotlin collaboration process establishes structured concurrency
Distributed ID
Explanation on the use of password profiteering cracking tool Hydra
Golang magic code
Talk about writing
Express - static resource request
Research on lg1403 divisor
【Ubuntu-redis安装】
Reading notes of "Introduction to deep learning: pytoch"
Idea setting automatic package Guide
List set export excel table
小程序开发踩坑之旅
float
Deep Learning with Pytorch- neural network
【新书推荐】MongoDB Performance Tuning
So the toolbar can still be used like this? The toolbar uses the most complete parsing. Netizen: finally, you don't have to always customize the title bar!
Express get request