Golang中grpc怎么用
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,小编给大家分享一下Golang中grpc怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. grpc安装pip in
千家信息网最后更新 2025年12月02日Golang中grpc怎么用
小编给大家分享一下Golang中grpc怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
1. grpc安装
pip install --upgrade pip
pip install grpcio --user
pip install protobuf --user
pip install grpcio-tools --user
sudo yum -y install protobuf-compiler protobuf-static protobuf protobuf-devel
dnf install protobuf-compiler.x86_64
pip install googleapis-common-protos --user
2. 导入grpc包
go get -u google.golang.org/grpc
go get -u github.com/golang/protobuf/protoc-gen-go
3. 编写test.proto文件
// 指定版本
syntax = "proto3";
option objc_class_prefix = "HLW";
// 定义包名
package demo;
// 定义服务
service ServerBase{
// 定义接口
// 方法
rpc MakeMD5(Request) returns (Response){}
rpc SayHello(HelloRequest) returns (HelloReplay){}
}
//请求的结构体
message HelloRequest{
// 类型 字段 = 标识号
string name = 1;
}
//返回的结构体
message HelloReplay{
string message = 1;
}
// 定义请求结构体
message Request{
string Data = 1;
}
// 定义返回接口体数据
message Response{
string Msg = 1;
}4. 生成.go文件
protoc --go_out=plugins=grpc: . test.proto
这时候目录低下会自动生成test.pb.go文件
5. 简单的书写server.go
package main
import (
"crypto/md5"
"errors"
"fmt"
"github.com/srlemon/note/grpc_"
"golang.org/x/net/context"
"google.golang.org/grpc"
"log"
"net"
)
const (
PORT = ":5003"
)
func main() {
// 开启监听
lis, err := net.Listen("tcp", PORT)
if err != nil {
log.Fatal(err)
}
// new
s := grpc.NewServer()
// 注册服务
demo.RegisterServerBaseServer(s, &Serve{})
log.Println("rpc服务已经开启")
s.Serve(lis)
}
// Serve 服务端
type Serve struct {
}
// MakeMD5 方法
func (s *Serve) MakeMD5(ctx context.Context, req *demo.Request) (ret *demo.Response, err error) {
if req == nil {
err = errors.New("请求数据为空")
return
}
md := md5.New()
data := md.Sum([]byte(req.Data))
ret = new(demo.Response)
ret.Msg = fmt.Sprintf("%x", data)
return
}
// SayHello 方法
func (s *Serve) SayHello(ctc context.Context, req *demo.HelloRequest) (ret *demo.HelloReplay, err error) {
if req == nil {
err = errors.New("请求数据为空")
return
}
ret = new(demo.HelloReplay)
ret.Message = req.Name
return
}
go run server.go 开启rpc服务
6. 写client.go文件
package main
import (
"fmt"
demo "github.com/srlemon/note/grpc_"
"golang.org/x/net/context"
"google.golang.org/grpc"
"log"
)
const (
addr = "127.0.0.1:5003"
)
func main() {
ctx := context.Background()
// 连接代理
conn, err := grpc.Dial(addr, grpc.WithInsecure())
if err != nil {
log.Fatal("did no connect", err)
}
defer conn.Close()
// 生成一个客户端
client := demo.NewServerBaseClient(conn)
var (
data *demo.Request
res *demo.Response
)
data = new(demo.Request)
data.Data = "哈哈,和黑"
// 使用服务端方法
if res, err = client.MakeMD5(ctx, data); err != nil {
log.Fatal("sssssssssss", err)
}
// 输出进行加密后的信息
fmt.Println(string(res.Msg))
// 使用服务端方法
_d, _ := client.SayHello(ctx, &demo.HelloRequest{Name: "哈哈哈"})
// 输出要说的内容
fmt.Println(_d.Message)
}
go run client.go
终端输出:

以上是"Golang中grpc怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
服务
方法
文件
内容
数据
篇文章
结构
生成
输出
接口
低下
不怎么
信息
大部分
字段
客户
客户端
更多
标识
标识号
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库满了咋办
网络安全操作人
泰州rs232串口服务器
湛江网络安全工程师培训机构
美国四大软件开发公司
越狱铃声软件开发
软件开发项目的绩效管理
数据库系统模块设计是什么
第一次国土调查数据库是什么格式
阳江app软件开发前十
水星路由器服务器不响应
迪岸网络技术上海有限公司
深圳威盛网络技术公司怎么样
电子软件开发公司主要业务
确山县公安局网络安全宣传
福建企业级服务器
厦门中拓互联网络科技有限
南昌市软件开发培训中心
纯真ip数据库提交
免费服务器和域名
关于网络安全的绕口令
日常网络安全威胁
怎么分辨腾讯云服务器
虹口区硬件视频系统服务器
网络安全分析面试准备
福州软件开发大概要多少钱
一些比较中等的软件开发公司
中国网络安全宣传周时间
计算机网络技术分理论和实操吗
网络技术应用模块三