安装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安装教程的更多相关文章

  1. Linux+apache+mono+asp.net安装教程

    Linux+apache+mono+asp.net安装教程(CentOS上测试的) 一.准备工作: 1.安装linux系统(CentOS,这个就不多讲了) 2.下载所需软件 http-2.4.4.ta ...

  2. Greenplum 源码安装教程 —— 以 CentOS 平台为例

    Greenplum 源码安装教程 作者:Arthur_Qin 禾众 Greenplum 主体以及orca ( 新一代优化器 ) 的代码以可以从 Github 上下载.如果不打算查看代码,想下载编译好的 ...

  3. git 安装教程

    昆,简单说下安装教程1,安装Git2,安装TortoiseGit3,打开第一步安装的git工具GIT BASH

  4. Docker和Docker-compose安装教程以及docker-elk,docker-storm安装教程

    此安装教程仅供我自己安装配置时查看,其他的人不可以偷看!!! 安装Docker 1. Update package information, ensure that APT works with th ...

  5. RHEL 6.3 详细安装教程

    以前刚接触linux时,什么都不懂,为了学习,在电脑上安装双系统(原系统为Win7),吃过不少苦头,在网上搜教程,很多都是语焉不详,导致安装过程中战战兢兢.最近朋友面试运维,面试官有考他对linux安 ...

  6. Android Studio的下载和安装教程(从ADT到AS)

    之前一直使用的是Android development tools(简称ADT),后来说是google对ADT不再提供支持,然后一直在考虑是否把自己电脑换成Android Studio(简称AS),从 ...

  7. mysql快速导出数据库ER图和数据字典(附navicat11安装教程及资源)

    ♣ mysql使用navicat11快速导出数据库ER图 ♣ mysql使用navicat11快速导出数据库数据字典 ♣ navicat11 for mysql (这里是mysql5.7.12)专业版 ...

  8. Smokeping安装教程

    Smokeping安装教程 #Smokeping2.6.8安装教程 #2016.3.6 改编v1.0 #Linux运维技术交流 347163978   环境 CentOS release 6.4 (F ...

  9. (二)ADS1.2的安装教程以及使用 调试 (不会 AXD 调试工具)

    安装教程: 参考百度 http://jingyan.baidu.com/article/cdddd41c7db85253cb00e1ae.html 具体使用看: 杨铸的那本书(嵌入式底层软件驱动开发) ...

随机推荐

  1. TypeScript作为前端开发你必须学习的技能(三)

    TypeScript 运算符 TypeScript 主要包含以下几种运算: 算术运算符 逻辑运算符 关系运算符 按位运算符 赋值运算符 三元/条件运算符 字符串运算符 类型运算符 实例看图: 关系运算 ...

  2. mysql 普通用户与权限

    1.创建用户 mysql> create user 'myself'@'%' identified by 'Myself'; Query OK, 0 rows affected mysql> ...

  3. C++ 打印XPS文档

    CoInitializeEx(, COINIT_MULTITHREADED); IXpsOMObjectFactory *xpsFactory; HRESULT hr = CoCreateInstan ...

  4. Bootstap

    Bootstrap框架 Bootstrap框架 Bootstrap介绍 Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. 它是为实现快速开发Web应用程序 ...

  5. week3 作业

    1.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示. 1.1 创建文件 touch FILE mkdir DIR mkdir -p DIR1/DIR2/DIR3/ 递归创建子目 ...

  6. Spring Cloud Stream教程(三)持续发布 - 订阅支持

    应用之间的通信遵循发布订阅模式,其中通过共享主题广播数据.这可以在下图中看到,它显示了一组交互式的Spring Cloud Stream应用程序的典型部署. 图6. Spring Cloud Stre ...

  7. 【每日一包0005】arr-flatten

    github地址:https://github.com/ABCDdouyae... arr-flatten 将多维数组展开成一维数组 文档地址:https://www.npmjs.com/packag ...

  8. 百度编辑器ueditor上传图片失败,显示上传错误,实际上图片已经传到服务器或者本地

    报错,上传失败,图片没有显示,且调试response没有信息,但是图片已经上传到了本地 这个问题是因为ueditor里面的Upload.class.php里面__construct()方法里面的ico ...

  9. HDU6534 Chika and Friendly Pairs(莫队,树状数组)

    HDU6534 Chika and Friendly Pairs 莫队,树状数组的简单题 #include<bits/stdc++.h> using namespace std; cons ...

  10. linux交叉编译Windows版本的ffmpeg

    主要参考http://www.cnblogs.com/haibindev/archive/2011/12/01/2270126.html 在我的机器上编译libfaac的时候 出现问题了 输出如下 . ...