![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
thrift
文章平均质量分 79
hbuxiaoshe
这个作者很懒,什么都没留下…
展开
-
thrift一个例子
我用的是c++,所以我举一个c++的例子,简单说一下thrift的使用入门。例子描述是这样的:我们将学生信息(学号,姓名,性别,年龄)由客户端发送到服务端。实现这个例子,我们大致要做以下几部分事情:(1)书写.thrift文件(2)生成cpp文件(3)编写客户端(4)编译cpp文件并执行 (1)书写.thrift文件学生信息是有结构的,所以我们使用thrift的原创 2011-06-21 12:47:00 · 30766 阅读 · 15 评论 -
thrift数据类型不同引起的传输问题
下面都是实验通过的。(1)原创 2014-08-29 22:49:38 · 5544 阅读 · 1 评论 -
关于thrift字段修改的问题
关于thrift字段修改的问题,实验证明:1,使用optional字段,不用判断是否设置。如果没有设置,内容为0(int)或者空(string)。2,optional字段设置时,只能用__set_xx()赋值,否则无效。3,required字段设置时,可以直接=赋值,也可以__set_xx()赋值。4,更改字段的名字后,发送端更新,而接收端不更新,照样接收成功。只会带来编译问题原创 2014-03-25 22:41:44 · 11581 阅读 · 1 评论 -
thrift的enum:根据value取得name
今天看thrift生成的xxx_type.h文件时,看到关于enum的一个map(长的类似这样_XXX_VALUES_TO_NAMES),记录了值与字符串之间的关系。它是干吗的?举个简单例子,假如thrift中有enum的定义如下:enum Sex { kMale = 0, kFemale = 1,}通过使用这个map,我们可以根据Sex::kMale拿到字符串"kMale",通原创 2014-04-02 22:30:56 · 9971 阅读 · 0 评论 -
thrift序列化和反序列化
thrift序列化和反序列化很简单,写个例子如下:#include #include #include #include "gen-cpp/student_types.h"using namespace apache::thrift; using namespace apache::thrift::protocol; using namespace apache原创 2013-01-18 15:43:30 · 10762 阅读 · 0 评论 -
使用TThreadPoolServer遇到的问题
最近,使用TThreadPoolServer遇到一个问题,就是线程池线程的数量少于发送端的数量引起的问题。外部表现有2个: 1)某些客户端无论如何都连接不上服务端。 2)服务端打开socket越来越多,直至65536,最终无法接收数据,甚至程序崩溃。 这算不算TThreadPoolServer bug?还是我用的不对?它应该拒绝多出来的请求,并关闭socket。 错原创 2013-05-06 14:57:28 · 6683 阅读 · 2 评论 -
thrift使用传输协议TCompactProtocol
如何使用其他传输协议?默认使用TBinaryProtocol,如何使用TCompactProtocol?解决方法:首先确认系统支持算术位移(负数的位移)在支持的情况下#include 因为在文件TCompactProtocol.tcc开头会有:#if !defined(SIGNE原创 2011-07-07 09:25:54 · 9093 阅读 · 3 评论 -
thrift安装
Thrift是Facebook开发出的一个软件库和一组代码生成工具,以加快高效率、可扩展的后端服务的开发与实现的速度。它通过对各语言最常用的部分加以抽象,把它们放进一个通用库里,再用各个语言实现,来实现跨编程语言的高效而可靠的通信。亦即,Thrift允许开发者在一个单独的语言无关的文件里,定义数据类型和服务接口,然后生成用来构建RPC客户和服务器所需的全部代码。 从官方网站(h原创 2011-06-21 09:05:00 · 9918 阅读 · 2 评论 -
thrift多线程服务端
接上一篇 thrift一个例子 作为服务端,应该能够同时接收多个客户端传来的数据,所以服务端应该实现多线程机制。按以下3个步骤改写服务端(Serv_server.skeleton.cpp)即可实现多线程。(1)采用线程池的main函数的代码如下:int main(int argc, char **argv) { // thread pool shared_ptrServHandle原创 2011-06-22 09:34:00 · 17682 阅读 · 16 评论 -
thrift通过TServerEventHandler获取客户端ip
用了这么久的thrift,一直不知道如何在接收端打印发送端的ip。原创 2014-08-30 11:38:54 · 9001 阅读 · 1 评论