• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

grpc实战(1)简单实现编译


Recommended Posts

1、创建项目grpc_demo文件架构,项目架构如下:

xgpv0ffb0v26133.png

2、在编译文件夹下创建hello_world.proto文件,内容如下:

//声明样机的版本只有proto3才支持胃泌肽

语法=' proto3

//将编译后文件输出在github.com/lixd/grpc-go-example/helloworld/helloworld目录

option go _ package='github.com/lixd/grpc-go-example/helloworld/helloworld';

//指定当前样机文件属于编译包

包编译

//定义一个名叫问候的服务

服务迎宾员

//该服务包含一个说你好方法HelloRequest、HelloReply分别为该方法的输入与输出

RPC say hello(hello请求)返回(hello回复){ }

}

//具体的参数定义

消息HelloRequest

字符串名称=1;

}

消息HelloReply

字符串消息=1;

}

3、在编译目录下运行如下命令:

protocol-go _ out=.-go _ opt=paths=source _ relative-go-grpc _ out=.-go-grpc _ opt=path=source _ relative ./hello_world.proto

此时,helloworld文件下会出现后缀为pb.go和_grpc.pb.go的两个文件。

4、编写计算机网络服务器代码:

具体步骤如下:

1)定义一个结构体,必须包含pb .未实现的迎宾员对象;

2)实现。样机文件中定义的应用程序接口

3)将服务描述及其具体实现注册到胃泌肽中;

4)在计算机网络服务器目录下分别运行命令go mod初始化服务器、go mod整理;

5)启动服务。

主包装

导入(

"背景"

"日志"

'净'

Pb ' github。' com/lixd/grpc-go-example/hello world/hello world '

google.golang.org/grpc的

)

常量(

port=':50051 '

)

//greeterServer定义一个结构体用于实现。样机文件中定义的方法

//新版本胃泌肽要求必须嵌入pb .未实现的迎宾员结构体

迎宾员结构类型{

pb .未实现的迎宾员

}

//SayHello简单实现一下。样机文件中定义的说你好方法

func(g *迎宾服务器)问好(CTX上下文。上下文,单位为*pb .HelloRequest) (*pb .HelloReply,error) {

日志Printf('收到: %v ',在.GetName())

返回pb .您好回复{邮件: '您好在.GetName()},零

}

func main() {

听着,err :=net .监听(' tcp ',端口)

如果呃!=零{

日志. Fatalf('未能监听: %v ',错误)

}

s :=grpc .新闻服务器()

//将服务描述(服务器)及其具体实现(迎宾服务器)注册到胃泌肽中去。

//内部使用的是一个地图结构存储,类似超文本传送协议服务器。

pb .RegisterGreeterServer(s,greeterServer{})

日志. Println('在0.0.0.0 '端口上提供gRPC)

如果err :=s.Serve(听);呃!=零{

日志. Fatalf('未能提供: %v ',错误)

}

}

5、编写客户代码:

具体步骤如下:

1)首先使用grpc .拨号()与胃泌肽服务器建立连接;

2)使用pb .康涅狄格州纽盖特客户公司获取客户端;

3)通过客户端调用服务应用程序接口方法客户。说你好。

4)在客户目录下分别运行命令go mod初始化客户端、go mod整理;

5)运行客户端。

主包装

导入(

"背景"

"日志"

操作系统

时间

Pb ' github。' com/lixd/grpc-go-example/hello world/hello world '

google.golang.org/grpc的

)

常量(

address='localhost:50051 '

defaultName='world '

)

func main() {

康恩,错误:=grpc .拨(地址,grpc .WithInsecure(),grpc .WithBlock())

如果呃!=零{

日志. Fatalf('未连接: %v ',错误)

}

延迟连接关闭()

c :=pb .康涅狄格州纽盖特客户公司

//通过命令行参数指定名字

name :=defaultName

如果len(os .Args) 1 {

name=os .参数[1]

}

ctx,取消:=上下文WithTimeout(上下文。背景(),时间。第二)

推迟取消()

说你好(ctx,pb .HelloRequest{Name: name})

如果呃!=零{

日志. Fatalf('无法迎接: %v ',错误)

}

日志Printf('Greeting: %s ',r.GetMessage())

}

参考:(29条消息)史上最细gRPC(Go)入门教程(二)- gRPC初体验-你好世界_指月小筑的博客程序员博客

Link to comment
Share on other sites