package main
import (
"context"
"log"
"net"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
pb "your_gRPC_proto_path" // 替换为你的gRPC protobuf定义路径
)
// 定义你的服务结构体
type GreeterServer struct{}
// 实现你的服务方法
func (s *GreeterServer) Greet(ctx context.Context, req *pb.GreetRequest) (*pb.GreetResponse, error) {
// 简单地返回一个问候响应
firstName := req.GetFirstName()
return &pb.GreetResponse{Message: "Hello " + firstName}, nil
}
func main() {
// 初始化gRPC服务器
grpcServer := grpc.NewServer()
// 注册服务
pb.RegisterGreeterServer(grpcServer, &GreeterServer{})
// 监听TCP端口
listener, err := net.Listen("tcp", ":50051")
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
// 服务循环
log.Println("服务启动,监听端口: :50051")
if err := grpcServer.Serve(listener); err != nil {
log.Fatalf("failed to serve: %v", status.Errorf(codes.Unknown, "serve error: %v", err))
}
}
这段代码展示了如何定义一个gRPC服务,注册服务方法,并在Go语言中启动一个gRPC服务器。这是学习gRPC和Go语言网络编程的一个很好的起点。在实际应用中,你需要替换your_gRPC_proto_path
为你的protobuf定义路径,并实现更复杂的服务逻辑。