参考:https://developer.aliyun.com/article/1152352?spm=a2c6h.12873639.article-detail.33.344f6446zEnbRi&scm=20140722.ID_community@@article@@1152352._.ID_community@@article@@1152352-OR_rec-V_1
参考:https://onejson.blog.csdn.net/article/details/90294238?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-90294238-blog-89449117.pc_relevant_recovery_v2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-90294238-blog-89449117.pc_relevant_recovery_v2&utm_relevant_index=3
syntax = "proto3";
option go_package = "./;MyGRPCService";
package proto;
message MyRequest {
string reqMessage = 1;
}
message MyResponse {
string respMessage = 1;
}
service MyService{
rpc MyQuery(MyRequest) returns (MyResponse);
}
protoc --go-grpc_out=. service.proto3
protoc --go_out=. service.proto3
protoc --go-grpc_out=./MyGRPCService --go_out=./MyGRPCService ../grpc_test/service.proto3 -I ../grpc_test
package main
import (
"context"
"fmt"
"google.golang.org/grpc"
"grpc_server/MyGRPCService"
"net"
"os"
"strconv"
)
type RpcService struct {
MyGRPCService.UnimplementedMyServiceServer
}
func (r *RpcService) MyQuery(ctx context.Context, req *MyGRPCService.MyRequest) (resp *MyGRPCService.MyResponse, err error) {
resp = &MyGRPCService.MyResponse{}
resp.RespMessage = strconv.Itoa(len(req.ReqMessage))
return
}
func main() {
server := grpc.NewServer()
MyGRPCService.RegisterMyServiceServer(server, &RpcService{})
lis, err := net.Listen("tcp", ":9003")
if err != nil {
fmt.Println("err : ", err)
os.Exit(1)
}
fmt.Println("servicing....")
err = server.Serve(lis)
if err != nil {
fmt.Println("err : ", err)
os.Exit(1)
}
}
protoc --go-grpc_out=./MyGRPCService --go_out=./MyGRPCService ../grpc_test/service.proto3 -I ../grpc_test
package main
import (
"context"
"fmt"
"google.golang.org/grpc"
"grpc_client/MyGRPCService"
"os"
)
func main() {
conn, err := grpc.Dial(":9003", grpc.WithInsecure()) //没有IP,默认本机
if err != nil {
fmt.Println("err:", err)
os.Exit(1)
}
defer conn.Close()
client := MyGRPCService.NewMyServiceClient(conn)
res, err := client.MyQuery(context.Background(), &MyGRPCService.MyRequest{
ReqMessage: "husdghdsg",
})
if err != nil {
fmt.Println("err:", err)
os.Exit(1)
}
fmt.Println(res)
}
protoc-gen-go-grpc: program not found or is not executable
Please specify a program using absolute path or make sure the program is available in your PATH system variable
--go-grpc_out: protoc-gen-go-grpc: Plugin failed with status code 1.
go install google.golang.org/grpc/cmd/[email protected]
go env
参考:https://blog.csdn.net/taoerchun/article/details/103554739