1.工具下载以及go的依赖下载
2.proto 文件
syntax = "proto3";
option go_package = ".;proto";
service Grennter {
rpc SayHell (HelloRequest) returns (HelloResponce);
}
message HelloRequest {
string name = 1;
}
message HelloResponce {
string data = 1;
}
2.1 proto文件生成go文件
protoc -I . *.proto --go_out=plugins=grpc:.
3.server 文件
package main
import (
"context"
"grpctest2/grpc_test/proto"
"net"
"google.golang.org/grpc"
)
type Server struct{}
func (s *Server) SayHell(ctx context.Context, request *proto.HelloRequest) (*proto.HelloResponce, error) {
return &proto.HelloResponce{Data: "Hello " + request.Name}, nil
}
func main() {
g := grpc.NewServer()
s := Server{}
proto.RegisterGrennterServer(g, &s)
conn, err := net.Listen("tcp", ":8080")
if err != nil {
panic(err)
}
g.Serve(conn)
}
4.client 文件
package main
import (
"context"
"fmt"
"grpctest2/grpc_test/proto"
"google.golang.org/grpc"
)
func main() {
conn, err := grpc.Dial("127.0.0.1:8080", grpc.WithInsecure())
if err != nil {
panic(err)
}
defer conn.Close()
c := proto.NewGrennterClient(conn)
response,err := c.SayHell(context.Background(),&proto.HelloRequest{Name:"spl"})
if err != nil {
panic(err)
}
fmt.Println(response.Data)
}