【轉自】http://blog.csdn.net/poechant/article/details/6618284#html
Thrift能夠實現C++、Java、Python等多種語言的自動生成,此處以C++爲例。java
1. 編寫[.thrift]文件
python
2. 自動生成服務器端程序bash
在Terminal中輸入以下命令,可自動生成[.cpp]和[.h]文件。服務器
thrift -r --gen cpp student.thrift socket
獲得的文件以下:函數
其中Serv_server.skeleton.cpp中有服務器端運行的main函數。這些文件名的Serv和student與你最初建立的thrift文件有關。spa
3. 編寫客戶端程序.net
#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. 編譯/連接
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