1 安装golang语言环境
详细可以参考本人博客文章Golang在Ubuntu 和 Windows下的安装
注意配置好GOPATH环境变量。
2. 安装gRPC
2.1 安装Protocol buffer编译工具 protoc第三版
安装下载地址:https://github.com/protocolbuffers/protobuf/releases
我下载的是protoc-3.12.3-win64.zip。目前protoc已经到第四版了,不要下载错了。
安装完成后,将安装好的protoc.exe路径加入到windows环境变量Path便于将来访问。
2.2 安装gRPC
以下是安装方式(推荐使用Git Bash命令行客户端):
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/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc
git clone https://github.com/google/go-genproto.git $GOPATH/src/google.golang.org/genproto
然后进入到$GOPATH/src目录下。
go install google.golang.org/grpc
下面是gRPC官网给出的protoc-gen-go的安装办法。执行安装后会生成会在$GOPATH目录下生成protoc-gen-go.exe 文件。
set GO111MODULE=on
go get github.com/golang/protobuf/protoc-gen-go
3. 运行样例gRPC程序
- 下载样本程序
git clone -b v1.30.0 https://github.com/grpc/grpc-go
- 切换至运行目录
cd grpc-go/examples/helloworld
- 编译和执行服务端程序
go run greeter_server/main.go
- 在另外一个命令行窗口编译和执行客户端程序
go run greeter_client/main.go
这里是服务器端输出样例:
...go\src\github.com\grpc-go\examples\helloworld>go run greeter_server/main.go
go: downloading google.golang.org/grpc v1.30.0-dev.1
go: downloading github.com/golang/protobuf v1.4.0
go: downloading google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55
go: downloading golang.org/x/net v0.0.0-20190311183353-d8887717615a
go: downloading google.golang.org/protobuf v1.21.0
go: downloading golang.org/x/text v0.3.0
2020/07/21 09:48:10 Received: world
这里是客户端输出样例:
...go\src\github.com\grpc-go\examples\helloworld>go run greeter_server/main.go
2020/07/21 09:48:10 Greeting: Hello world
4. 下载缓慢甚至出错的问题解决
在安装和运行样例程序的时候,都会发现网络问题导致的各种烦恼和问题。
4.1 设置Git下载代理
下面是设置例子。可以极大提高下载速度
#设置http/https代理(例子)
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'
#或者只设置github的代理
git config --global http.http://github.com.proxy socks5://127.0.0.1:1080
git config --global https.https://github.com.proxy socks5://127.0.0.1:1080
#检查代理是否正常设置完成
git config --global --get http.proxy
git config --global --get https.proxy
git config --global --get http.http://github.com.proxy
git config --global --get https.https://github.com.proxy
#去掉代理
git config --global --unset http.proxy
git config --global --unset https.proxy
4.2 设置Go网络代理
下面的例子是没有设置go网络代理出现的问题。
>go run greeter_server/main.go
go: github.com/golang/mock@v1.1.1: Get "https://proxy.golang.org/github.com/golang/mock/@v/v1.1.1.mod": dial tcp 34.64.4.81:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
下面是临时环境变量的写法。
set http_proxy=socks5://127.0.0.1:1080
set https_proxy=%http_proxy%
设置好之后的输出效果参考本文【3 运行样例gRPC程序 】。
参考1 gRPC官网安装手册:Quick Start
参考2 简书博客: Windows下grpc安装
参考3 配置终端代理解决 go get 命令国内无法使用