GRPC的相关操作以及遇到的问题

这篇文章是上一篇文章grpc简介的后续,是我在使用grpc的过程中所遇到的一些问题和解决方案。

版本问题

前情提要:原先根据第一版本的接口文件生成的grpc客户端和grpc服务端已经能够通信正常。后来接口文件有改动,我所负责的grpc客户端是根据新版接口文件生成的,与原先的grpc服务端通信,发现并不能正常通信。

解决办法

查找大量资料后发现,grpc实现跨语言通信,proto文件要完全一样。而grpc服务端还是原先旧版的接口文件生成的,又因为我们是跨语言通信(grpc客户端是c++语言,grpc服务端是c#语言)。最终用新版的接口文件生成新版的grpc服务端,能正常通信。

客户端流

开启写线程,在需要将对应数值发送的地方,通过addspeed函数,加入到队列中。而while循环里,根据队列是否为空来判断是否要继续给grpc服务端发送数据。如果队列为空,则表示目前没有数据需要发送,若队列不为空,则发送队列中最前面的数据,如果发送成功,则将最前面的数据pop出来,如果发送失败,则不会pop出来,会继续再发送,直到该数据发送成功。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

服务端流

在这里插入图片描述

开启读线程。通过while循环不停的用reader->Read()去获取服务端传过来的数值。如果没有什么条件判断,可以直接将reader->Read()替换gamestatus.load() == Gamestatus::playing。我这边是因为只有在游戏进行中,才会去获取服务端的值,如果游戏状态为游戏已结束则不需要浪费资源去不停的获取。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值