windows 安装使用 protochttps://mp.csdn.net/mp_blog/creation/editor/121233500php-Grpc 实现客户端https://blog.csdn.net/kolinhu/article/details/121234055?spm=1001.2014.3001.5502
demo2 码云地址https://gitee.com/linhu8493/go-php-grpc
1. 创建 data2/go_server/serve.go 服务端
package main
import (
// 引入刚打好的包 此处 需要核对 hello.proto go_package
"demo2/helloGo/hello/hello"
"net"
"fmt"
"google.golang.org/grpc"
"context"
)
type rpcServer struct {}
/**
创建映射对象 使用*号 深复制 register的rpcS.. 对象
@param ctx context
@param
*/
func (r *rpcServer) Run( ctx context.Context, param *hello.Requests) (*hello.Responses, error) {
// 打印输出 客户端值并返回 Responses数据对象
fmt.Print(param.Name)
return &hello.Responses{
Message : "hello"+ param.Name,
},nil
}
func main() {
//创建 net服务监听端口
li, err := net.Listen("tcp", ":1234");
if err != nil {
panic(err)
}
// 实例化 grpc server
server := grpc.NewServer()
// 注册hello 绑定给 &rpcServer对象
hello.RegisterHelloServer(server, &rpcServer{})
// 开启服务
server.Serve(li)
}
2. 创建 demo2/go_client/client.go 客户端
package main
import (
"context"
"fmt"
"grpc/demo1/hello/hello"
"time"
"google.golang.org/grpc"
)
func main() {
// 客户端监听端口
conn, err := grpc.Dial("127.0.0.1:1234", grpc.WithInsecure())
if err != nil {
panic(err)
}
defer conn.Close()
// 获取文本对象
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
//创建对象
client := hello.NewHelloClient(conn)
res,err := client.Run(ctx, &hello.Requests{Name:"小Q",})
fmt.Print(res)
}
3. 测试
1. 开启 服务端
go run .\demo2\go_serve\serve.go
2. 运行客户端
go run demo2\go_client\client.go
3. 此时 服务端接收输出 "小Q", 客户端接收输出 "message:"hello小Q""
4. success