gRPC go安装教程
安装protobuf
go get -u github.com/golang/protobuf/proto
go get -u github.com/golang/protobuf/protoc-gen-go
此时会生成protoc-gen-go,protoc一般是获取已经编译好的可执行文件(https://github.com/google/protobuf/releases)
linux需要将protoc-gen-go放到/usr/bin/,windows因为$GOPATH/bin已经加到PATH中了所以可以直接找到
安装gRPC
go get -u google.golang.org/grpc
不过由于国内的网络原因上面的命令可能不会成功
执行下面的多条命令来代替
git clone https://github.com/golang/net.git $GOPATH/src/golang.org/x/net
git clone https://github.com/golang/text.git $GOPATH/src/golang.org/x/text
git clone https://github.com/google/go-genproto.git $GOPATH/src/google.golang.org/genproto
git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc
如果 $GOPATH中有多个路径,请手动替换成其中一个。
测试案例
HelloService.proto和之前C++编译教程的一样
生成命令如下:
protoc HelloService.proto -I . --go_out=. 这个是仅仅生成protobuf的产物
protoc HelloService.proto -I . --go_out=plugins=grpc:.
生成的HelloService.pb.go 需要改成package main
server.go
package main import (
"context"
"fmt"
"net" "google.golang.org/grpc"
) type HelloServiceServerImpl struct {
} func (s *HelloServiceServerImpl) SayHello(c context.Context, req *Request) (*Response, error) {
fmt.Printf("%s\n", string(req.Data)) resp := Response{}
resp.Data = []byte("hello from server") return &resp, nil
} func main() {
lis, err := net.Listen("tcp", "127.0.0.1:57501")
if err != nil {
fmt.Println(err)
return
}
s := grpc.NewServer()
RegisterHelloServiceServer(s, &HelloServiceServerImpl{})
fmt.Printf("Server listening on 127.0.0.1:57501\n")
s.Serve(lis)
}
client.go
package main import (
"context"
"fmt" "google.golang.org/grpc"
) func main() {
conn, err := grpc.Dial("127.0.0.1:57501", grpc.WithInsecure())
if err != nil {
fmt.Println(err)
}
client := NewHelloServiceClient(conn)
r, err := client.SayHello(context.Background(), &Request{Data: []byte("send from client")})
fmt.Printf("%s\n", string(r.Data))
}
使用go build -o client HelloService.pb.go client.go编译
C++版本的服务器
Go客户端
gRPC go安装教程的更多相关文章
- Linux+apache+mono+asp.net安装教程
Linux+apache+mono+asp.net安装教程(CentOS上测试的) 一.准备工作: 1.安装linux系统(CentOS,这个就不多讲了) 2.下载所需软件 http-2.4.4.ta ...
- Greenplum 源码安装教程 —— 以 CentOS 平台为例
Greenplum 源码安装教程 作者:Arthur_Qin 禾众 Greenplum 主体以及orca ( 新一代优化器 ) 的代码以可以从 Github 上下载.如果不打算查看代码,想下载编译好的 ...
- git 安装教程
昆,简单说下安装教程1,安装Git2,安装TortoiseGit3,打开第一步安装的git工具GIT BASH
- Docker和Docker-compose安装教程以及docker-elk,docker-storm安装教程
此安装教程仅供我自己安装配置时查看,其他的人不可以偷看!!! 安装Docker 1. Update package information, ensure that APT works with th ...
- RHEL 6.3 详细安装教程
以前刚接触linux时,什么都不懂,为了学习,在电脑上安装双系统(原系统为Win7),吃过不少苦头,在网上搜教程,很多都是语焉不详,导致安装过程中战战兢兢.最近朋友面试运维,面试官有考他对linux安 ...
- Android Studio的下载和安装教程(从ADT到AS)
之前一直使用的是Android development tools(简称ADT),后来说是google对ADT不再提供支持,然后一直在考虑是否把自己电脑换成Android Studio(简称AS),从 ...
- mysql快速导出数据库ER图和数据字典(附navicat11安装教程及资源)
♣ mysql使用navicat11快速导出数据库ER图 ♣ mysql使用navicat11快速导出数据库数据字典 ♣ navicat11 for mysql (这里是mysql5.7.12)专业版 ...
- Smokeping安装教程
Smokeping安装教程 #Smokeping2.6.8安装教程 #2016.3.6 改编v1.0 #Linux运维技术交流 347163978 环境 CentOS release 6.4 (F ...
- (二)ADS1.2的安装教程以及使用 调试 (不会 AXD 调试工具)
安装教程: 参考百度 http://jingyan.baidu.com/article/cdddd41c7db85253cb00e1ae.html 具体使用看: 杨铸的那本书(嵌入式底层软件驱动开发) ...
随机推荐
- 数据结构——Bloom Filter
1. 一个很长的二进制向量和一个映射函数 2.用于检索一个元素是否在集合中,但有一定的错误概率:通过BloomFilter的元素不一定在集合当中,但是不通过BloomFilter的元素一定不在集合当中 ...
- 使用net命令启动MongoDB服务发生系统错误,返回值为5
使用net命令启动MongoDB服务发生系统错误,返回值为5 错误的截图如下: 解决的方案是以管理员的身份运行命令窗口,参考如下: https://www.cnblogs.com/fanblogs/p ...
- mysql 时间索引执行计划
项目中查询时间断的数据发现查询时间很长.怀疑没有走时间的索引,于是explain一下 EXPLAIN select * from t_order where created_at>'2015-0 ...
- MySQL自动生成序号列
select (@i:=@i+1) i,a.CITYID from basis_cityinfo a ,(select @i:=0) t2 order by a.id desc limit 220;
- mysql AVG()函数 语法
mysql AVG()函数 语法 作用:AVG 函数返回数值列的平均值.NULL 值不包括在计算中.大理石模组 语法:SELECT AVG(column_name) FROM table_name m ...
- 【BZOJ2409】 地下车会
Description 小Y喜欢速度与激情,于是他参加了地下车会. 地下车会设有N 个分赛区,M种赛事.每个分赛区有C[i]场比赛.由于地下车会经营者想要赚到更多的钱,规定小 Y 必须参加某一些赛区 ...
- 关于win7系统下gitbook的安装与gitbook editor的配合使用
1.安装nodejs 2.node -v,可查看node版本: npm -v,可查看npm版本 3.npm install gitbook-cli -g,安装gitbook 此过程经常报错,如果报错, ...
- [BZOJ2987]Earthquake:类欧几里得算法
分析 类欧的式子到底是谁推的啊怎么这么神仙啊orz! 简单说一下这道题,题目中的约束条件可以转化为: \[ y \leq \frac{c-ax}{b} \] 有负数怎么办啊?转化一下: \[ y \l ...
- HDU2179--pi(麦金公式)
Problem Description 计算圆周率到小数点后5n 位.(本题不可打表) Input 正整数n<300. n=0结束. Output 圆周率pi到小数点后5n位.第1行输出3.以5 ...
- EM 算法资料
EM 算法的英文全称是: Expectation-Maximum. EM 算法的步骤 假设 \(Z\) 是隐变量,\(\theta\) 是待定参数. E 步:固定参数 \(\theta\),求 \(Z ...