安装配置grpc-golang
- linux安装配置很简单
- windows参考https://blog.csdn.net/tyler_xiang/article/details/78529358
编写协议文件
编写协议文件pi.proto
syntax = \"proto3\";
package pi;
// pi service
service PiCalculator {
// pi method
rpc Calc(PiRequest) returns (PiResponse) {}
}
// pi input
message PiRequest {
int32 n = 1;
}
// pi output
message PiResponse {
double value = 1;
}
生成代码
protoc -I. --go_out=plugins=grpc:. pi.proto
实现服务接口
server端代码
package main
import (
\"golang.org/x/net/context\"
\"google.golang.org/grpc\"
// 这里的路劲是上一步骤生成的代码的路径
pi \"path/to/pi.pb.go\"
\"log\"
\"math\"
\"net\"
)
const port = \":8080\"
type server struct{}
func (s *server) Calc(ctx context.Context, in *pi.PiRequest) (*pi.PiResponse, error) {
var res float64 = 0.0
for i := 0; i < int(in.N); i++ {
res += 1.0 / float64(2*i+1.0) / float64(2*i+1)
}
return &pi.PiResponse{Value: math.Sqrt(8 * res)}, nil
}
func main() {
lis, err := net.Listen(\"tcp\", port)
if err != nil {
log.Fatalf(\"failed to listen: %v\", err)
}
s := grpc.NewServer()
pi.RegisterPiCalculatorServer(s, &server{})
log.Fatal(s.Serve(lis))
}
client端代码
package main
import (
\"fmt\"
\"golang.org/x/net/context\"
\"google.golang.org/grpc\"
// 这里的路劲是上一步骤生成的代码的路径
pi \"path/to/pi.pb.go\"
\"log\"
)
const (
address = \"localhost:8080\"
)
func main() {
conn, err := grpc.Dial(address, grpc.WithInsecure())
if err != nil {
log.Fatal(\"can\'t connect to address: \", err)
}
defer conn.Close()
client := pi.NewPiCalculatorClient(conn)
for i := 0; i < 100000; i++ {
calc(client, i)
}
}
func calc(client pi.PiCalculatorClient, i int) {
r, err := client.Calc(context.Background(), &pi.PiRequest{N: 100})
if err != nil {
log.Println(i, err)
}
fmt.Println(i, r.Value)
}
补充
上一篇博客中的python-grpc和这一片的golang-grpc可以互相调用
继续阅读与本文标签相同的文章
上一篇 :
选择共享办公室对于创业者有哪些好处呢?
-
特斯拉明年将在日本安装家用蓄电池 首次在亚洲亮相
2026-05-19栏目: 教程
-
原创教程:创建邮箱群组,同时发给诸多收件人
2026-05-19栏目: 教程
-
揭秘!大数据知识工程到底是什么
2026-05-19栏目: 教程
-
微软:所有Windows 10用户默认启用Defender篡改保护功能
2026-05-19栏目: 教程
-
国际机器人联合会:全球工业机器人2019报告
2026-05-19栏目: 教程
